javascript数据类型之对象

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
原文地址:https://www.cnblogs.com/luwanlin/p/14301047.html