Object
- 描述 :
- JS中基本所有的对象都是Object类型的实例,它们都会从Object.prototype继承属性和方法。
Object构造函数,会根据给定的参数创建对象
- JS中基本所有的对象都是Object类型的实例,它们都会从Object.prototype继承属性和方法。
// 如果给定值是 null 或 undefined,将会创建并返回一个空对象
let obj = new Object(null);
console.log(obj);
// 传进去的是一个基本类型的值,则会构造**其包装类型的对象**
let obj1 = new Object(12);
console.log(obj1);
// 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量**保有和源对象相同的引用地址**
let obj2 = new Object({
name: 'fjh'
});
console.log(obj2);
Object构造函数的属性
- Object.length . 值为1.
- Object.prototype . 其显示原型对象,用于其实例对象的隐式原型对象的指向。通过原型链使用其中的方法。
静态方法
Object.assign() (半浅半深拷贝
)
Object.assign 不会在那些source对象值为 null 或 undefined 的时候抛出错误
- 语法: Object.assign(target, …sources)
- 返回值: 目标对象
- 描述: 将所有可枚举属性(enumerable
)的值从一个或多个源对象分配到目标对象。它将返回目标对象.
let obj = {
name: 'fjh',
sex: {
sex: 'nan'
}
}
let obj1 = {
};
obj1 = Object.assign(obj1, undefined);
console.log(obj1);
// {} . 空对象.
let obj = {
name: 'fjh',
sex: {
sex: 'nan'
}
}
let obj1 = {
};
obj1 = Object.assign(obj1, obj);
obj1.sex.sex = 'nv';
console.log(obj);
//可以修改对象的可枚举属性。
const obj = Object.create({
foo: 1}, {
// foo 是个继承属性。
bar: {
value: 2 // bar 是个不可枚举属性。
},
baz: {
value: 3,
enumerable: true // baz 是个自身可枚举属性。
}
});
const copy = Object.assign({
}, obj);
console.log(copy); // { baz: 3 }
Object.create()
- 语法: Object.create(proto , propertiesObject)
- proto . 新创建的对象的隐式原型对象。
- propertiesObject . 可选。需要传入一个对象。属性类型可在这修改。
- 返回值:一个新对象,带着指定的原型对象和属性
- (感觉有点绕,还是看下面例子会明白。)
// 类式继承
function Father(name) {
this.name = name;
}
function Son(name, age) {
Father.call(this, name);
this