04. JavaScript では、オブジェクト内の元の属性値の変更、オブジェクト内の元の属性の名前の変更 (2 つのメソッド)、オブジェクトへの新しい属性の追加などができます。

1. オブジェクト内の元の属性値を変更します。

まず、コードは次のとおりです。

// 異なる値に従って値を変更したいobjflagつまり、オブジェクト内の元の属性値を変更する);


let obj = {
    
    "port": "port_0","desc": "desc_0","flag": 0} 

console.log(obj, 111111111);

for(let i in obj) {
    
      // 给 obj 对象做循环;
  console.log(i, 2222222222)
  obj.flag = obj.flag === 0 ? '0' : '1' // 根据 obj.flag 的值来判断,给 obj.flag 赋值;
}
    
console.log(obj, 33333333333);
// 此时的输出结果为:{port: "port_0", desc: "desc_0", flag: '1'}  33333333333




// 最简洁的方法:
let obj1 = {
    
    "port": "port_0","desc": "desc_0","flag": 0} 
obj1.flag = obj1.flag === 0 ? '0' : '1' // 根据 obj.flag 的值来判断,给 obj.flag 赋值;
console.log(obj1,444444444444444)
// 此时的输出结果为:{port: "port_0", desc: "desc_0", flag: '1'}  444444444444444

次に、ページは次のように表示されます。

ここに画像の説明を挿入します

第三に、次の使用jsfor-inです。

//これは、オブジェクトをループするために特別に使用されるfor-in特別な種類のループです。for

注: 通常のものはfor 循环単独、配列、疑似配列をループできますが、オブジェクトはループできません。
本質的にfor 循环ループできるのは数値と配列だけであり、本質は配列のインデックス (インデックスも数値です) をループすることであるためです。
ただし、 object にはインデックスがないため、通常のfor 循环オブジェクトはリサイクルできません。


//语法
for(let 属性名变量 in 要循环的对象){
    
    
    循环体代码
}

機能: for-in ループは、指定されたオブジェクトを自動的にループします。オブジェクトに複数の属性がある場合は、数回ループします。 注: 宣言した属性名変数は、属性
の属性名を毎回自動的に受け取ります。注
: 以前の属性値の取得方法は「object.property name」でしたが、for-in では「object.property name 変数」を通じて属性値を取得できません。取得メソッドは変数を解析できません。 ; if
we 属性名変数を通じて属性値を取得したい場合は、次のように記述する必要があります: object [属性名変数];
[] は変数を解析し、変数の値を属性名として使用して、対応する属性値。

2. オブジェクト内の元の属性の名前を変更します ( 正则匹配替换)。

まず、obj文字列オブジェクトに変換します。

A. コードは次のとおりです。


// 注意:定义变量一般使用 let 而不是 var;
let obj = {
    
     jobNumber: 6, name: 26, profession: '程序员'}
let objString = JSON.stringify(obj)   //先将 obj 对象转换成字符串对象;
console.log(objString, 111111)  
// 此时的输出结果为:{"jobNumber":6,"name":26,"profession":"程序员"} 111111

B. ページは次のように表示されます。

ここに画像の説明を挿入します

次に、name文字列オブジェクトの属性の名前を次のように変更しますage

A. コードは次のとおりです。

let obj = {
    
     jobNumber: 6, name: 26, profession: '程序员'}
let objString = JSON.stringify(obj)   //先将 obj 对象转换成字符串对象;
console.log(typeof(objString),typeof(objString) === 'string', objString, 22222222)
// 此时的输出结果为:string true {"jobNumber":6,"name":26,"profession":"程序员"} 22222222
let newObj = objString.replace(/name/g, 'age')  
//使用正则匹配将属性名 name 修改为 age;
console.log(newObj,333333333) 
// 此时的输出结果为:{"jobNumber":6,"age":26,"profession":"程序员"} 333333333

B. ページは次のように表示されます。

ここに画像の説明を挿入します

第三に、方法 2:

A. コードは次のとおりです。


let obj = {
    
     jobNumber: 6, name: 26, profession: '程序员'}
obj.age = obj.name // 在 obj 中添加 age 属性,且属性值是 name 属性的值;
console.log(obj, 1111111111)
// 此时的输出结果为:{jobNumber: 6, name: 26, profession: '程序员', age: 26} 1111111111
for(let i in obj) {
    
    
  console.log(i, 2222222222)
  if(i === 'name') {
    
    
  	delete obj[i] // 此时是选中 name 属性值,并将该 name 属性删除掉;
  }
}
console.log(obj, 2222222222)
// 此时的输出结果为:{jobNumber: 6, profession: '程序员', age: 26} 2222222222 
// 此时也相当于完成了修改对象中原有属性名字的操作;

B. ページは次のように表示されます。

ここに画像の説明を挿入します

第 4 に、考えられる問題:

A.直接声明字符串对象操作の実行時にエラーが報告されます。

//エラーの理由:replace文字列が使用されることになっていますAPIが、オブジェクトを直接使用することはできませんreplace API


let objString1 = {
    
    "jobNumber":6,"name":26,"profession":"程序员"}
console.log(typeof(objString1),typeof(objString1) === 'string', objString1, 111111111)
// 此时的输出结果为:object false {jobNumber: 6, name: 26, profession: '程序员'} 111111111
let newObj = objString1.replace(/name/g, 'age')  
// 此时页面直接报错:Uncaught TypeError: objString1.replace is not a function    at <anonymous>:3:25
console.log(newObj,4444444444) 

ここに画像の説明を挿入します

B.直接将对象转成字符串実行結果が表示されない場合:

//表示されない理由:空のオブジェクトではなくコード ブロックとみなされる{}.toString()ため、直接書き込むことはできません。 //出力結果は次のとおりです。{}
({}).toString()[object Object]


let objString1 = {
    
    "jobNumber":6,"name":26,"profession":"程序员"}
let objString2 = objString1.toString() //将字符串对象转化为字符串,但此时打印不出来;
console.log(typeof(objString2),typeof(objString2) === 'string', objString2, 22222222)
// 此时的输出结果为:string true [object Object] 22222222
let newObj = objString2.replace(/name/g, 'age') 
console.log(newObj,4444444444) // 此时的输出结果为:[object Object] 4444444444

ここに画像の説明を挿入します

C.将对象 JSON.stringify 处理 操作が正常に実行されると、次のように表示されます。


let objString1 = {
    
    "jobNumber":6,"name":26,"profession":"程序员"}
let objString3 = JSON.stringify(objString1)
console.log(typeof(objString3),typeof(objString3) === 'string', objString3, 22222222)
// 此时的输出结果为:string true {"jobNumber":6,"name":26,"profession":"程序员"} 22222222
let newObj = objString3.replace(/name/g, 'age')
console.log(newObj,4444444444) 
// 此时的输出结果为:{"jobNumber":6,"age":26,"profession":"程序员"} 4444444444

ここに画像の説明を挿入します

D. その他のtoString()操作:


(1).toString()      // "1"

console.log( (1).toString(), typeof((1).toString()), 111111111)
// 此时的输出结果为:1 string 111111111


[1,2].toString()    // "1, 2"
 
console.log([1,2].toString(), typeof([1,2].toString()), 2222222)
// 此时的输出结果为:1,2 string 2222222
 



({
    
    }).toString()     // [object Object]
// 不能直接写成{}.toString()是因为:{}会被当成代码块而不是空对象
console.log(({
    
    }).toString(),  typeof(({
    
    }).toString()), 3333333333 )
// 此时的输出结果为:[object Object] string 3333333333



true.toString()     // "true"

console.log(true.toString(), typeof(true.toString()), 4444444444)
// 此时的输出结果为: true string 4444444444




null.toString()     // Uncaught TypeError: Cannot read property 'toString' of null

console.log(null.toString(), 555555555)
// 此时的输出结果为: VM173:5 Uncaught TypeError: Cannot read properties of null (reading 'toString')  at <anonymous>:5:18




undefined.toString()  // Uncaught TypeError: Cannot read property 'toString' of null

console.log(undefined.toString(), 66666666)
// 此时的输出结果为: Uncaught TypeError: Cannot read properties of undefined (reading 'toString')   at <anonymous>:5:23






// 要页面显示的整体代码:
console.log( (1).toString(), typeof((1).toString()), 111111111)
console.log([1,2].toString(), typeof([1,2].toString()), 2222222)
console.log(({
    
    }).toString(),  typeof(({
    
    }).toString()), 3333333333 )
console.log(true.toString(), typeof(true.toString()), 4444444444)
console.log(null.toString(), 555555555)
console.log(undefined.toString(), 66666666)
 

ここに画像の説明を挿入します

ここに画像の説明を挿入します

3. 新しい属性をオブジェクトに追加します。

まず、方法 1:

A. コードは次のとおりです。


let obj = {
    
     jobNumber: 6, name: "John", profession: '程序员'}
obj.age = 26 // 此时就是:给 obj 对象添加一个 age 属性;
console.log(obj,11111111111111)
// 此时的输出结果为:{jobNumber: 6, name: 'John', profession: '程序员', age: 26} 11111111111

B. ページは次のように表示されます。

ここに画像の説明を挿入します

次に、方法 2:

A. コードは次のとおりです。


let obj = {
    
     jobNumber: 6, name: "John", profession: '程序员'}
obj['age'] = 26 // 此时就是:给 obj 对象添加一个 age 属性;
// 注意:添加的代码为 obj['age'] = 26,而若代码为 obj[age] = 26,就会报错;
console.log(obj,22222222222)
// 此时的输出结果为:{jobNumber: 6, name: 'John', profession: '程序员', age: 26} 22222222222

B. ページは次のように表示されます。

ここに画像の説明を挿入します

4. 概要:

まず、間違っている点や不適切な点があれば、指摘や交換をお願いします。
次に、この記事の内容を転送または引用する場合は、このブログのアドレスを明記してください ( 直接点击下面 url 跳转) https://blog.csdn.net/weixin_43405300 . 作成は簡単ではありませんが、それは行われ、大切にされなければなりません。第三に、興味がある場合は、このコラム (Vue (Vue2+Vue3) の面接必須コラム) ( ): https://blog.csdn.net/weixin_43405300/category_11525646.html?spm=1001.2014
に注目してください。 3001.5482直接点击下面 url 跳转

おすすめ

転載: blog.csdn.net/weixin_43405300/article/details/132716784