__proto__属性

今天来说下这个属性__proto__。之前也看这个属性的介绍,但是上次面试被问到答的不怎么好。今天再巩固一下

这个属性是用来读取或设置当前对象的prototype对象的。目前所有的浏览器都部部署了这个属性。

这个属性前后都有双下划线,说明它本质上是一个内部的属性,而不是一个对外api。但是所有的浏览器都支持,所以被 加入了

es6,但标准也规定了,只有浏览器才部署这个属性。而其它的环境不一定部署这个属性。所以写代码时最好不要用这个属性。

原因已经很清楚了,想实现它的功能可以使用下面的方法

Object.setPrototypeOf()      (写)

Object.getPrototypeOf()       (读)

Object.create()              (生成。创建)

总之。这个属性知道 就行了。最好不要用

原文地址:https://www.cnblogs.com/zyh-code/p/10970110.html

时间: 2024-11-06 09:52:57

__proto__属性的相关文章

简单介绍 javascript 中 __proto__ 属性的原理

在 javascript 中我们会约定俗成,如果一个方法是被 new 出来使用的,那么该方法名首字母通常会大写,例如下面代码块中的 Person.(我们也可以把 Person 看成 java 或 c# 中的类) var Person = function(name) { this.name = name; } 在 javascript 中一个类被 new 出来的具体过程如下: // 初始化一个对象 p var p = new Person(); // 初始化一个对象 p var p = {};

[Effective JavaScript 笔记]第31条:使用Object.getPrototypeOf函数而不要使用__proto__属性

ES5引入Object.getPrototypeOf函数作为获取对象原型的标准API,但由于之前的很多js引擎使用了一个特殊的__proto__属性来达到相同的目的.但有些浏览器并不支持这个__proto__属性,所以并不是完全兼容的.例如对于拥有null原型的对象,不同的环境结果就不同了. var empty=Object.create(null); '__proto__' in empty;//一些环境会返回false,另一些会返回true 这就导致结果的不一致,从而影响到依赖这个判断的相关

走进__proto__属性,看ie是否支持它,谁又来给他归宿

每一个引用类型的实例中,都有一个指针,指向其原型对象.这个指针在非IE浏览器里通过__proto__表示,而在IE里不提供. 看如下代码: obj = {}; obj.__proto__.toString = function() { return "__proto__"; } var ceshi = {}; alert(ceshi); 输出结果就是__proto__. 原因:JavaScript中只有一个Object原型对象.   第二行,修改了这个原型对象的toString成员变量

js中__proto__, property, prototype, 对象自身属性方法和原型中的属性方法的区别

__proto__: 这个属性是实例对象的属性,每个实例对象都有一个__proto__属性,这个属性指向实例化该实例的构造函数的原型对象(prototype). proterty:这个方法是对象的属性.(据说和一个对象的attr类似,比如dom对象中) prototype:每个构造函数都有一个prototype对象,这个对象指向该构造函数的原型. 对象自身属性方法和原型中的属性方法的区别: 对象自身的属性和方法只对该对象有效,而原型链中的属性方法对所有实例有效. 例子: function bas

javascript的oop——>>> [__proto__ 与 prototype/原型链/原型属性与原型方法/for-in循环]

  前  言  OOP  javascript的oop中的__proto__  与  prototype/原型链/原型属性与原型方法/for-in循环 1  __proto__  与  prototype/原型链   1.prototype(函数的原型):函数才有prototype.prototype是一个对象,指向了当前构造函数的引用地址呢.                       2.__proto__(对象的原型对象):所有对象都要__proto__属性.当用构造函数实例化(new)一

js的__proto__、constructor和prototype属性

__proto__和constructor属性是对象所独有的:prototype属性是函数所独有的.但是由于JS中函数也是一种对象,所以函数也拥有__proto__和constructor属性. 先来看下面这段代码:function foo(){} let f = new foo(); foo()是函数,它的constructor属性指向Function(),它的prototype属性指向foo.prototype,它的__proto__属性指向Function.prototype.f是foo实

理清javascript中prototype、__proto__、Object、Function的关系,更好地理解原型继承

本文参考了http://www.blogjava.net/heavensay/archive/2013/10/20/405440.html这篇文章,对其内容作了个简单总结,形成了几条简单的结论,让读者更容易记住prototype.__proto__.Object.Function之间的关系. 结论1:Object.prototype只是一个普通对象,它是js原型链的最顶端. (typeof Object.prototype) === object;//true Object.prototype.

在 JavaScript 中 prototype 和 __proto__ 有什么区别

本文主要讲三个 问题 prototype 和 proto function 和 object new 到底发生了什么 prototype 和 proto 首先我们说下在 JS 中,常常让我们感到困惑的地方,就是 prototype 和 __proto__ 到底是干嘛的 1. __proto__ 就是 Javascript中 所谓的原型 (这里,我们还是拿具体的例子来说明吧) function A (name) { // 这里是一个构造函数 thia.name = name } var Aobj

prototype和__proto__

一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. __proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性. 用chrome和FF都可以访问到对象的__proto__属性,IE不可以. 二.new 的过程 var Person = function(){}