js中对象所属类、对象中原型属性以及构造函数三者的关系

来源:互联网 发布:mac退出全屏 编辑:程序博客网 时间:2024/05/14 18:23

在本篇文章中,部分内容引用自《JAVASCRIPT 权威指南》一书。

首先,js中的一切都为对象,而除了OBJECT.PROTOTYPE外的任何对象都具有prototype属性。

所有通过对象直接量创建的对象,具有同一个prototype属性——object.prototype。

所有通过new创建的对象,其prototype属性被赋值为构造函数所对应的prototype。

在本人理解来看,除了值为object.prototype外的所有prototype,都可以说明对象所属的类。

如:

function User(name){

this.name=name;

}//此处为对构造函数的定义

var me=new User("my name");//此处便是通过构造函数初始化对象me。me.prototype=User.prototype,此时me.constructor==User为true(constructor为prototype所指对象具有的一个属性,该属性指向prototype所对应的构造函数,通过该属性,可以判别对象属于哪类。)

当我们不同过对象的实例化,而是直接调用构造函数时,如:

User("TEST");

则此时默认是通过对象对window对象来调用构造函数进行实例化,此时window.prototype=User.prototype,window.constructor==User为true。


0 0