javascript 相关知识要点摘要。

一切皆为对象。

function 也是对象, 类型是 function, 原型是 Function(){};

hasOwnProperty函数:
hasOwnProperty是Object.prototype的一个方法,它可是个好东西,他能判断一个对象是否包含自定义属性而不是原型链上的属性,因为hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数。

.prototype 属性:
对象的原型,指向对象的原型。 javascript 采用的是原型链集成方式。


.constructor 属性:
constructor 属性返回对创建此对象的数组函数的引用。

.constructor 的应用:
比如获取个目标对象一样的 对象,可以使用  new this.constructor(); 



instanceof 为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型
语法为 o instanceof A

javascript中instanceof和类的细节

在javascript里,每个function都有一个prototype属性,这个属性的用途是实现继承机制。必如下面定义的function class1:
function class1(){}
class1.prototype = {a:10,b:100};
则class1的每个实例都会从prototype继承a和b这两个属性。

同时,每个对象都会有一个内部的属性_proto_(不同的javascript虚拟机实现用的名字可能不同),这个属性对js开发人员不可见,只在虚拟机内部使用。每当创建一个对象的时候,这个对象的_proto_就会被赋值为这个对象的构造函数的prototype,这样对象的_proto_属性和构造函数的prototype引用相同的对象,并且一旦对象创建完成,_proto_属性就不会改变。 这样通过对象的_proto_属性,以及_proto_所引用的对象的_proto_属性,就构成了一个_proto_链。 当访问一个对象的属性和方法的时候,js虚拟机正是通过这个_proto_链来查找的。

关于instanceof:
假设有一条这样的语句:
o instanceof c;
在上面的语句执行过程中,虚拟机会把c.prototype和o的_proto_链上的节点逐个进行比较,如果找到相等的节点,则返回true,否则返回false。

JavaScript中__proto__与prototype的关系一、所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empty function)
二、所有对象的__proto__都指向其构造器的prototype

你可能感兴趣的:(javascript 相关知识要点摘要。)