Open adodo0829 opened 4 years ago
对象: 是一种复杂的数据类型,它将许多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值; 对象也可看做是属性的无序集合,每个属性都是一个键值对; 属性键名是字符串,因此我们可以把对象看成是从字符串到值的映射.
new构造函数, 对象直接量, Object.create()函数
var person = new Object(); // 无参可不加括号 person.name = 'huhau'; person.age = 26; person['sex'] = 'male'; // .访问 优先 []的需计算访问 console.log(person) // {name: "huhau", age: 26, sex: "male"}
// 参数为空,null,undefined: {}
// 参数为对象; 返回这个对象
// 参数为原始值类型: 返回其包装对象 var n = new Object(1) // { proto: Number, [[PrimitiveValue]]: 1 }
// Object(params) 将参数转换为对象
- 字面量创建实例对象
var person = { name: 'huhua', age: 26, 1: true }; 属性名会自动转换成字符串
- Object.create(p1, p2)创建实例对象
第一个参数就是这个对象的原型 第二个可选参数用以对对象的属性进行进一步描述
var o1 = Object.create({x:1,y:1}); // o1的原型指向这个对象;继承了属性x和y console.log(o1.x); // 1
var o2 = Object.create({z:3},{ x:{value:1,writable: false, enumerable:true, configurable:true}, y:{value:2,writable: false, enumerable:true, configurable:true} }); console.log(o2.x, o2.y, o2.z);// 1 2 3
var o2 = Object.create(null); // o2不继承任何属性和方法, 是一个纯净的数据容器
## 对象成员 对象是属性的无序集合,由键名和属性值组成. 键名: > 键名都是字符串,所以加不加引号都可以,如果不是字符串也会自动转换成字符串 > 键名不符合标识符命名规则,则必须加上引号 属性值: > 属性值可以是任何类型的表达式,最终表达式的结果就是属性值的结果 > 属性为函数时,通常称为方法, 也有 name 属性 ## 对象引用 不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量. 如果取消某一个变量对于原对象的引用,不会影响到另一个变量 ## 对象的实例方法 - valueOf()
var o = { name: 'huhua' } console.log(o.valueOf()) // { name: 'huhua' }
- toString()
var o1 = new Object(); o1.toString() // "[object Object]"
对象及其属性和方法
对象: 是一种复杂的数据类型,它将许多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值; 对象也可看做是属性的无序集合,每个属性都是一个键值对; 属性键名是字符串,因此我们可以把对象看成是从字符串到值的映射.
对象创建
new构造函数, 对象直接量, Object.create()函数
// 参数为空,null,undefined: {}
// 参数为对象; 返回这个对象
// 参数为原始值类型: 返回其包装对象 var n = new Object(1) // { proto: Number, [[PrimitiveValue]]: 1 }
// Object(params) 将参数转换为对象
var person = { name: 'huhua', age: 26, 1: true }; 属性名会自动转换成字符串
第一个参数就是这个对象的原型 第二个可选参数用以对对象的属性进行进一步描述
var o1 = Object.create({x:1,y:1}); // o1的原型指向这个对象;继承了属性x和y console.log(o1.x); // 1
var o2 = Object.create({z:3},{ x:{value:1,writable: false, enumerable:true, configurable:true}, y:{value:2,writable: false, enumerable:true, configurable:true} }); console.log(o2.x, o2.y, o2.z);// 1 2 3
传入 null
创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何东西
var o2 = Object.create(null); // o2不继承任何属性和方法, 是一个纯净的数据容器
valueOf()方法会返回当前对象
var o = { name: 'huhua' } console.log(o.valueOf()) // { name: 'huhua' }
toString()方法返回当前对象对应的字符串形式
var o1 = new Object(); o1.toString() // "[object Object]"