免费企业名录网站,合肥建设银行招聘网站,总裁培训班,沃尔玛网上超市本地对象#xff1a;ECMA-262 把本地对象#xff08;native object#xff09;定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说#xff0c;本地对象就是 ECMA-262 定义的类#xff08;引用类型#xff09;内置对象#xff1a;ECMA-262 把内置对象… 本地对象ECMA-262 把本地对象native object定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说本地对象就是 ECMA-262 定义的类引用类型内置对象ECMA-262 把内置对象built-in object定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象它已被实例化了。ECMA-262 只定义了两个内置对象即 Global 和 Math 它们也是本地对象根据定义每个内置对象都是本地对象。宿主对象所有非本地对象都是宿主对象host object即由 ECMAScript 实现的宿主环境提供的对象。所有 BOM 和 DOM 对象都是宿主对象。enumerables [hasOwnProperty, valueOf, isPrototypeOf, propertyIsEnumerable, toLocaleString, toString, constructor];// hasOwnProperty是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是此方法无法检查该对象的原型链中是否具有该属性该属性必须是对象本身的一个成员。
// Ie8以下不支持dom. hasOwnProperty 方法。
// isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中是则返回true否则返回false。1、hasOwnProperty作用是用来判断一个对象是否有你给出名称的属性或对象。调用方式object.hasOwnProperty(proName)参数object(必须) 对象的实例proName(必须) 一个属性名称的字符串值注意如果 object 具有带指定名称的属性则 hasOwnProperty 方法返回 true否则返回 false。此方法不会检查对象原型链中的属性。该属性必须是对象本身的一个成员。Internet Explorer 8 和低于其的版本的宿主对象不支持该属性。代码举例在下面的示例中所有 String 对象共享一个公共 split 方法。 下面的代码将显示 false 和 true。var s new String(Sample);console.log(s.hasOwnProperty(split));console.log(String.prototype.hasOwnProperty(split));2、in 运算符作用测试一个对象中是否存在一种属性。调用方式result property in object参数result(必须) 任何变量proName(必须) 计算结果为字符串表达式的表达式object(必须) 任意对象注意in 运算符确定对象中是否有名为 property 的属性。 它还确定属性是否为对象的原型链的一部分。代码举例code1:var myObject new Object();myObject.name James;myObject.age 22;myObject.phone 555 0234;if (phone in myObject) {console.log(property is present);} else {console.log(property is not present);}code2:console.log(toString in zheyang);console.log(toString in new String(zheyang))思考 var aa zheyang 与 aa new String(zheyang) 的区别 3、valueOf作用返回指定对象的原始值。调用方式object.valueOf();注意在JS里数字其实都是浮点数。代码举例var aa 123 console.log(aa.valueOf())console.log(123.valueOf())console.log(123..valueOf())console.log((123).valueOf())4、typeof作用返回指定对象的类型。
调用方式typeof object;代码举例var aa 12;var bb new Number(12)console.log(typeof aa)console.log(typeof bb)5、instanceof作用返回一个布尔值该值指示一个对象是否为特定类或构造函数的一个实例。调用方式object instanceof class;参数object(必须) 一个对象class(必须) 任何对象类或构造函数注意如果 object 是 class 或构造函数的实例则 instanceof 运算符返回 true。如果 object 不是指定类或函数的实例或者 object 为 null则返回 false。JavaScript Object 很特殊当且仅当对象用 Object 构造函数构造时对象才被视为 Object 的实例。代码举例function ClassA() {}function ClassB() {}ClassB.prototype {constructor: ClassA}function ClassC(){ClassA.call(this);}function ClassD(){}var obj new ClassAvar obj2 new ClassB;var obj3 new ClassC;ClassD.prototype obj2;var obj4 new ClassD;console.log(obj instanceof ClassA)console.log(obj2 instanceof ClassB)console.log(obj2 instanceof ClassB)console.log(obj3 instanceof ClassA)console.log(obj4 instanceof ClassA)console.log(ClassA instanceof Function)6、isPrototypeOf作用确定一个对象是否存在于另一个对象的原型链中。调用方式prototype.isPrototypeOf(object)参数prototype(必须) 对象原型object(必须) 另一个对象将对其原型链进行检查注意如果 object 的原型链中具有 prototype则 isPrototypeOf 方法返回 true。原型链用于在同一个对象类型的不同实例之间共享功能。当 object 不是对象或当 prototype 没有出现在 object 的原型链中时isPrototypeOf 方法返回 false。代码举例function Rectangle() {}var rec new Rectangle();cosole.log(Rectangle.prototype.isPrototypeOf(rec));7、propertyIsEnumerable作用返回布尔值该值指示指定属性是否为对象的一部分以及该属性是否是可枚举的。调用方式object.propertyIsEnumerable(propName)参数object(必须) 对象实例;propName(必须) 一个属性名称的字符串值注意如果 propName 存在于 object 中且可以使用一个 For...In 循环枚举出来则 propertyIsEnumerable 属性将返回 true。如果 object 不具有所指定名称的属性或者所指定的属性不是可枚举的则 propertyIsEnumerable 属性将返回 false。通常预定义的属性不是可枚举的而用户定义的属性总是可枚举的。propertyIsEnumerable 属性不考虑原型链中的对象。代码举例var a new Array(apple, banana, cactus);var s a.propertyIsEnumerable(1);console.log (s);8、toString / toLocaleString作用可把一个对象转换为字符串并返回结果。调用方式object.toString(num)参数object(必须) 对象;num(非必须) 注意如果对象是数子则参数可为要转换的进制数默认为10如果是布尔类型则会转换为对应的字符串代码举例var aa 123console.log(aa.toString(2))var bb new Boolean(true)console.log(bb)9、constructor代码举例 constructor.parent 10、 Function 与 ObjectFunction:首先回顾一下函数对象的概念函数就是对象,代表函数的对象就是函数对象。
所有的函数对象是被Function这个函数对象构造出来的。
也就是说Function是最顶层的构造器。
它构造了系统中所有的对象包括用户自定义对象系统内置对象甚至包括它自已。
这也表明Function具有自举性(自已构造自己的能力)。
这也间接决定了Function的[[call]]和[[constructor]]逻辑相同。Object:对于Object它是最顶层的对象所有的对象都将继承Object的原型
但是你也要明确的知道Object也是一个函数对象
所以说Object是被Function构造出来的。代码举例
alert(Function instanceof Function);//true
alert(Function instanceof Object);//true
alert(Object instanceof Function);//true
function Foo() {};
var foo new Foo();
alert(foo instanceof Foo); // true
alert(foo instanceof Function); // false
alert(foo instanceof Object); // true
alert(Foo instanceof Function); // true
alert(Foo instanceof Object); // true 转载于:https://www.cnblogs.com/haohaoday/p/3944987.html