1 对象
1.1 创建对象
/* use Object method:new */
var car = new Object();
/* give a 对象实例 directly */
var car = {};
1.2 属性和方法
---
var car = {
color : "red",
run(){alert("run")}
};
---
//ES6更简洁的表示
var name = "zhangsan";
var age = 12;
var person = {name,age};
console.log(person);//{name:"zhangsan",age:12}
---
/* 访问属性和方法 */
car.color;//red
car.run();//alert("run")
car["color"];//red
car["run"]();//alert("run")
/* 增加属性和方法 */
car.type = "suv";
car.stop = function(){alert("stop")};
/* 修改属性和方法 */
car.color = "white";
car.run = function(){alert("run2")};
/* 删除属性和方法 */
delete car.color;
car.color; //undefined
//属性名可以是表达式
//字面量(大括号{ })定义对象的时候,属性名和方法名可以是一个表达式,表达式的运算结果就是属性名或者方法名。这点改进会使得对象在实际开发中的使用变得更加的灵活方便,
var f = 'first';
var n = 'name';
var s = 'say';
var h = 'hello';
var person = {
[f+n]:'zhang',
[s+h](){
return 'nihao';
}
};
console.log(person.firstname);//zhang
console.log(person.sayhello);//nihao
1.3 构造函数查询 obj.constructor
/* obj.constructor */
var car = {
color : "red",
run : function(){alert("run")}
};
car.constructor;//Object
var num = new Number(123);
num.constructor;//Number
1.4 对象字符串化 obj.toString()
/* obj.toString() */
var num = new Number(123);
num.toString();//"123"
1.5 对象值查询 obj.valueOf()
/* obj.valueOf() */
var num = new Number(123);
num.valueOf();//123
1.6 对象属性存在查验
var car = {
color : "red",
run : function(){alert("run")}
};
car.hasOwnProperty("color");//true
car.hasOwnProperty("logo");//false
1.7 对比两个值是否严格相等 Object.is()
var str = '12';
var num = 12;
var num2 = 12;
Object.is(str,num);//false
Object.is(num,num2);//true
1.8 将源对象的属性赋值到目标对象上 Object.assign(target,origin1,[origin2,...])
let target = {'a':1};
let origin = {'b':2,"c":3};
let origin2 = {"d":4};
let origin3 = {'a':8};
Object.assign(target,origin);
console.log(target);//{a:1,b:2,c:3}
Object.assign(target,origin,origin2);
console.log(target);//{a:1,b:2,c:3,d:4} //可以有多个源对象
object.assign(target,origin3);
console.lgo(target);//{a:8} 相同属性,后面的属性值就会覆盖前面的属性值
1.9 获取对象的prototype属性 Object.getPrototypeOf(obj)
//Object.getPrototypeOf() 获取一个对象的prototype属性
function Person(){};
Person.prototype = {
say(){console.log('nihao')};
}
var Lu = new Person();
Lu.say();//'nihao'
Object.getPrototypeOf(Lu);//say:function(){console.log('nihao')}
1.10 设置对象的prototype属性 Object.setPrototypeOf(obj,fn)
//Object.setPrototypeOf() 设置一个对象的prototype属性
Object.setPrototypeOf(
Lu,
{say(){console.log('hi')}
});
Lu.say();//hi