了解Object的常用方法
先看下Object的所有方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44var objectNames = Object.getOwnPropertyNames(Object);
console.log(objectNames)
/*
[ 'length',
'name',
'prototype',
'assign',
'getOwnPropertyDescriptor',
'getOwnPropertyDescriptors',
'getOwnPropertyNames',
'getOwnPropertySymbols',
'is',
'preventExtensions',
'seal',
'create',
'defineProperties',
'defineProperty',
'freeze',
'getPrototypeOf',
'setPrototypeOf',
'isExtensible',
'isFrozen',
'isSealed',
'keys',
'entries',
'values' ]
*/
var objectAllNames = Object.getOwnPropertyNames(Object.prototype);
console.log(objectAllNames)
/*
[ 'constructor',
'__defineGetter__',
'__defineSetter__',
'hasOwnProperty',
'__lookupGetter__',
'__lookupSetter__',
'isPrototypeOf',
'propertyIsEnumerable',
'toString',
'valueOf',
'__proto__',
'toLocaleString' ]
*/
Object.defineProperty(foo, ‘fullName’, {})用于设置一个对象的属性值和描述符,描述符有4个:
[[Configurable]],
[[Enumerable]], 是否可以foreach,stringify
[[Writable]],
[[Value]]
Object.getOwnPropertyDescriptor(foo, ‘fullName’); 可以取得给定属性的描述符
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。
obj.hasOwnProperty(“属性名”);//实例obj是否包含有圆括号中的属性,是则返回true,否则是false
所有继承了Object.prototype的对象都会从原型链上继承到hasOwnProperty方法,这个方法检测一个对象是否包含一个特定的属性,和in不同,这个方法会忽略那些从原型链上继承的属性。
1 | var o =new Object(); |
1 | // 只有对象才有__proto__属性。 |
call和apply方法(Function的方法)
都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
1 |
|