Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对象类型(属性和方法) #27

Open
adodo0829 opened this issue Apr 12, 2020 · 0 comments
Open

对象类型(属性和方法) #27

adodo0829 opened this issue Apr 12, 2020 · 0 comments

Comments

@adodo0829
Copy link
Owner

对象及其属性和方法

对象: 是一种复杂的数据类型,它将许多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值;
对象也可看做是属性的无序集合,每个属性都是一个键值对; 属性键名是字符串,因此我们可以把对象看成是从字符串到值的映射.

对象创建

new构造函数, 对象直接量, Object.create()函数

  • new 方式创建实例对象
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

# 传入 null
# 创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何东西
var o2 = Object.create(null); // o2不继承任何属性和方法, 是一个纯净的数据容器

对象成员

对象是属性的无序集合,由键名和属性值组成.
键名:

键名都是字符串,所以加不加引号都可以,如果不是字符串也会自动转换成字符串
键名不符合标识符命名规则,则必须加上引号

属性值:

属性值可以是任何类型的表达式,最终表达式的结果就是属性值的结果
属性为函数时,通常称为方法, 也有 name 属性

对象引用

不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量.
如果取消某一个变量对于原对象的引用,不会影响到另一个变量

对象的实例方法

  • valueOf()
# valueOf()方法会返回当前对象
var o = { name: 'huhua' }
console.log(o.valueOf()) // { name: 'huhua' }
  • toString()
# toString()方法返回当前对象对应的字符串形式
var o1 = new Object();
o1.toString() // "[object Object]"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant