Object对象

1. Object对象:

所有对象都继承它,同时它还是一个构造函数。

2. 构造函数:

所有构造函数都有一个prototype属性,指向原型对象。凡是定义在Object.prototype对象上面的属性和方法,将被所有实例对象共享。

3. 原型对象:

4. 构造函数的方法:

Object.print1 = (o)=>{console.log(o);}
const o = new Object({a:1});
Object.print1(o);// {a:1}

5. 实例对象的方法:

Object.prototype.print2 = ()=>{// 这里使用了箭头函数,使得this指向了window
  console.log(this);
}
Object.prototype.print3 = function(){// 实例对象继承原型的所有属性和方法
  console.log(this);
}
const o = new Object({a:1});
o.print2();// {}
o.print3();// {a:1}

6. 原始类型和包装对象:三个包装对象Number,String,Boolean

Object() // 返回一个空对象
Object() instanceof Object // true

Object(undefined) // 返回一个空对象
Object(undefined) instanceof Object // true

Object(null) // 返回一个空对象
Object(null) instanceof Object // true

Object(1) // 等同于 new Number(1)
Object(1) instanceof Object // true
Object(1) instanceof Number // true

Object('foo') // 等同于 new String('foo')
Object('foo') instanceof Object // true
Object('foo') instanceof String // true

Object(true) // 等同于 new Boolean(true)
Object(true) instanceof Object // true
Object(true) instanceof Boolean // true

7. 如果Object构造函数的参数是一个对象,它总返回原对象

var arr = [];
Object(arr) // 返回原数组
Object(arr) === arr // true

var obj = {};
Object(obj) // 返回原对象
Object(obj) === obj // true

var fn = function () {};
Object(fn) // 返回原函数
Object(fn) === fn // true

利用它可以判断变量是否为对象

function isObject(value) {
  return value === Object(value);
}

isObject([]) // true
isObject(true) // false

8. 静态方法:

Object本身的方法,前面说的构造函数的方法,就是静态方法。此外还有好多,如Object.keys()等。

9. 实例方法:Object.protoType上的方法。如

valueOf():返回当前对象对应的值。
toString():返回当前对象对应的字符串形式。
等等

10. toString的应用:

const a = {a:1};
console.log(a.toString());//[object Object] 第二个参数就是该对象的构造函数

如果a对象重写了toString函数

const a = {
    a: 1,
    toString: function() {
        return this;
    }
};
console.log(a.toString());// { a: 1, toString: [Function: toString] }

那就使用Object.protoType.toString去搞,会发现大部分构造函数都重写了toString方法

const a = {
    a: 1,
    toString: function() {
        return this;
    }
};
console.log(1,a.toString());// 1 { a: 1, toString: [Function: toString] }
console.log(2,Object.prototype.toString.call(a));// 2 '[object Object]'

const b = 'bbb';
console.log(3,b.toString());// 3 'bbb'
console.log(4,Object.prototype.toString.call(b));// 4 '[object String]'

const c = 23;
console.log(5,c.toString());// 5 '23'
console.log(6,Object.prototype.toString.call(c));// 6 '[object Number]'

const d = [];
console.log(7,d.toString());// 7 ''
console.log(8,Object.prototype.toString.call(d));// 8 '[object Array]'

const e = () => { a: 1 };
console.log(9,e.toString());// 9 '() => { a: 1 }'
console.log(10,Object.prototype.toString.call(e));// 10 '[object Function]'

const f = true;
console.log(11,f.toString());// 11 'true'
console.log(12,Object.prototype.toString.call(f));// 12 '[object Boolean]'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值