Object.prototype.__proto__ 、Object.prototype和 Object.prototype.constructor

Object.prototype.__proto__:

  实体对象指向造它的构造函数的 prototype属性所指 的对象 ,实例的__proto__是引用构造函数的prototype属性所指对象,

Object.prototype :

  js规定,构造函数有prototype 属性,指向一个对象,这个对象一般就是构造函数的公有成员。

  所以 __proto__  和 prototype 可以指向同一个对象  {key1:value1,key2:value2,......},构造函数的私有和特权函数会被带到每个实例函数中,每个实例都会包含相同的私有和特权特权成员的副本,因而实例越多越占内存,实例是在栈中的,构造函数在堆中,因为构造函数都是实例的引用。

Object.prototype.constructor:

   返回一个指向创建了该对象原型的函数引用,返回的是函数本身,不是包含函数名称的字符串;依赖一个对象的 constructor 属性并不安全,因为其可以被赋值,从而改变指向,然后丢失方法。此处略。。。。

(ECMAScript 2015 (6th Edition, ECMA-262)Object.prototype.constructor)

以下举例谁说明:

//构造函数
var Mother=function(){};
    //new一个实例
var aSon=new Mother();  //此时aSon继承了Mother里面的prototype属性所指向的代码,引用此代码,aSon.__proto__=Mother.prototype;都相等了,所以指向的是同一个对象

1、Object.prototype.constructor   :function(){}2、Object.prototype :{...} 3、Object.prototype.__proto__ :{...}                          //Object.prototype就是实例 是全被继承的

一、var aSon={};  //初始化一个对象二、aSon.__proto__=Mother.prototype;      //把Mother.prototype的指向赋值给aSon.__proto__  ,然后两个都指向了一个对象{...}三、aSon.apply(this);     //构造函数Mother把指针指向aSon对象
 
时间: 2024-11-07 02:30:53

Object.prototype.__proto__ 、Object.prototype和 Object.prototype.constructor的相关文章

instanceof,Object.getPrototypeOf(),Object.create(),Object.setPrototypeOf(),Object.prototype.isPrototypeOf(),Object.prototype.__proto__

一.instanceof instanceof运算符返回一个布尔值,表示指定对象是否为某个构造函数的实例 var v = new Vehicle(); v instanceof Vehicle // true instanceof对整个原型链上的对象都有效,因此同一个实例对象,可能会对多个构造函数都返回true var d = new Date(); d instanceof Date // true d instanceof Object // true 利用instanceof运算符,还可以

prototype & __proto__

[普通对象 vs 函数对象] js中对象分为两类,普通对象.函数对象.当在终端打印时,普通对象与函数对象有极其明显的差异. 一个不含杂七杂八的函数对象如下,这是第一种表现形式.: 若往里面塞东西,则会显示成下面这样.这是第二种表现形式,特点是[]别扭地紧跟在{右侧.: 一个普通对象有如下两种形式: 普通对象无法通过()来调用,函数对象可以通过()来调用,这是重大区别. [内置数据剖析] js引擎内部有一个函数对象,这里称为BaseFunction,以及一个空对象,这里称为Root. BaseFu

js new都做了什么 prototype __proto__

现在对自己之前理解的东西,总结下,整理到这,看我那会画的一张图,我都不知道在说什么,那会的瞬间都疏通的感觉,现在基本都模糊了,我这脑子真是... 言归正传 开始: 一:思考new都做了什么,下面一个例子 function A (){ var a1=111; this.a2=222; function fa(){ console.log(a1); } fa(); } A.prototype.a3="333"; var b = new A(); new一个构造函数, 1:会先新建一个对象,

prototype __proto__ Function

我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象.(注意:是函数才有prototype属性) 而__proto__属性每一个对象都有. 在js中如果A对象是由B函数构造的,那么A.__proto__ === B.prototype 所以: (1).__proto__ === Number.prototype//true http://blog.csdn.net/aitangyong/article/details/44837655 结论1:Object.prot

原型链之prototype/__proto__/constructor

(一)prototype 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法. 通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性 (二)__proto__ 根据ECMA定义 'to the value of its constructor’s "prototy

js 原型链 prototype __proto__

1.说明 函数(Function)才有prototype属性,对象(除Object)拥有__proto__. 2.prototype与__proto__区别 示例: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-w

实践一些js中的prototype, __proto__, constructor

<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="stylesheet" type="text/css" href="ExtJs/

【jquery】javaScript中prototype的妙用 巧妙运用prototype属性原型链创建对象

prototype  可以有好多有优化实现方法 http://blog.csdn.net/liuqiwen0512/article/details/8089690 在 JavaScript 中,每个函数对象都有一个默认的属性 prototype,称为函数对象的原型成员,这个属性指向一个对象,称为函数的原型对象,当我们每定义了一个函数的时候,JavaScript 就创建了一个对应的原型对象,也就是说,当我们定义一个函数的时候,实际上得到了两个对象,一个函数对象,一个原型对象.原型对象是一个特殊的对

对象是否拥有某个属性,in和for in以及object.hasOwnProperty(&#39;&#215;&#215;&#215;&#39;)的异同,以及Object.defineProperty(),Object.keys(),Object.getOwnPropertyNames()的用法

1.在某个对象是否拥有某个属性,判断的方法有很多,常用的方法就是object.hasOwnProperty('×××'),这个方法是不包括对象原型链上的方法的,举个例子: var obj = { name:'fei' } console.log(obj.hasOwnProperty('name'))//true console.log(obj.hasOwnProperty('toString'))//false 在这个例子中,obj对象存在的name属性的时候,调用这个方法才是返回true,我们