JavaScript对象基础

2018-12-10  本文已影响0人  咖A喱

var person = {};

var objectName = {
member1Name : member1Value,
member2Name : member2Value,
member3Name : member3Value
}


name : {
first : 'Bob',
last : 'Smith'
},

链式的再使用一次点表示法,像这样:

person.name.first
person.name.last12



原型对象概念

无论什么时候,只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。而通过这个构造函数,可以继续为原型对象添加其他属性和方法。创建了自定义的构造函数后,其原型对象默认只会取得 constructor 属性;至于其他方法,则都从 Object 继承而来。当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象。ECMA-262第5版管这个指针叫[[Prototype]] 。脚本中没有标准的方式访问[[Prototype]],但Firefox、Safari和Chrome在每个对象上都支持一个属性proto;而在其他实现中,这个属性对脚本是完全不可见的。不过,要明确的真正重要的一点就是,这个连接存在于示例和构造函数的原型对象之间,而不是存在于实例和构造函数之间。

这段话基本概述了构造函数、原型、示例之间的关系,下图表示更清晰

原型链

其实javascript的new关键字只不过做了五件事情。

1.创建Object

2.查找class的prototype上的所有方法、属性,复制一份给创建的Object(注意,如果prototype上有属性是function或者数组或者Object,那么只复制指针)

3.将构造函数classA内部的this指向创建的Object

4.创建的Object的proto指向class的prototype

5.执行构造函数class


Object对象属性及方法(了解)

constructor属性是保存当前对象的构造函数,前面的例子中,constructor保存的就是Object方法。

var obj1 = new Object();
obj1.id = "obj1";
varobj2 = {
"id": "obj2"
};
console.log(obj1.constructor);//functionObject(){}
console.log(obj2.constructor);//functionObject(){}

**hasOwnProperty(propertyName)hasOwnProperty方法接收一个字符串参数,该参数表示属性名称,用来判断该属性是否在当前对象实例中,而不是在对象的原型链中。我们来看看下面这个例子:

isPrototypeOf(Object)isPrototype方法接收一个对象,用来判断当前对象是否在传入的参数对象的原型链上

propertyIsEnumerable(prototypeName)prototypeIsEnumerable用来判断给定的属性是否可以被for..in语句给枚举出来。

toLocaleString()toLocalString方法返回对象的字符串表示,和代码的执行环境有关。

toString()toString用来返回对象的字符串表示。

valueOf()valueOf方法返回对象的原始值,可能是字符串、数值或bool值等,看具体的对象。

JS对象

String对象

属性:

constructor所建立对象的函数参考

prototype能够为对象加入的属性和方法

length返回字符串的字符长度
参考资料


for in

上一篇 下一篇

猜你喜欢

热点阅读