理解JavaScript的prototype和__proto__】的更多相关文章

首先,要明确几个点: 1.在JS里,万物皆对象. 方法(Function)是对象,方法的原型(Function.prototype)是对象.因此,它们都会具有对象共有的特点.即:对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法. 2.方法(Function) 方法这个特殊的对象,除了和其他对象一样有上述_proto_属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个…
本文主要讲三个 问题 prototype 和 proto function 和 object new 到底发生了什么 prototype 和 proto 首先我们说下在 JS 中,常常让我们感到困惑的地方,就是 prototype 和 __proto__ 到底是干嘛的 1. __proto__ 就是 Javascript中 所谓的原型 (这里,我们还是拿具体的例子来说明吧) function A (name) { // 这里是一个构造函数 thia.name = name } var Aobj…
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/prototype.html 经常有小伙伴问我关于prototype和__proto__的问题,觉得有必要写一篇博客总结归纳一下. 要想弄明白这两个概念,我们先得明白什么是类,什么是对象,什么是实例化 零.什么是类,什么是对象,什么是实例化 拥有一点点面向对象思想的小伙伴应该都知道,我们在写代码的时候,是在跟一个一个的对象打交道,我们修改对象的属性,调用对象的方法,以此来让程序为我们服务. 要创建对象,就需要有一…
1.prototype:构造函数独有的属性: __proto__:每个对象都有一个名为__proto__的属性: 注意:每个构造函数(自带与自创)都有一个prototype的属性,构造函数的prototype的属性也是一个对象,因此也有一个__proto__的属性. function A(){} var a = new A(); console.log(a.prototype); // undefined console.log(A.prototype); // Object {} consol…
在Javascript中创建对象主要分为三种方式 1. var catA = {name: "Fluffy", color: "White", age: 0}; 2. var catB = Object.create(new Object()); catB.name = "Fluffy"; catB.color = "White"; catB.age = 0; 3. function Cat(name, color) { th…
一.类型 1.JavaScript中分为值类型(string/boolean/null/number/undefind).引用类型(数组.对象.函数): 2.数组.函数.对象都是对象: 对象是由函数创建的,每个对象都有_proto_属性指向构造函数的原型对象(f1._proto===Fn.prototype) eg: function Fn(){}; var f1 = new Fn(); Fn.prototype也是个对象,也有__proto__属性,它是函数Object创建,即(Fn.prot…
JavaScript语言的原型是前端开发者必须掌握的要点之一,但在使用原型时往往只关注了语法,其深层的原理并未理解透彻.本文结合笔者开发工作中遇到的问题详细讲解JavaScript原型的几个关键概念,如有错误,欢迎指正. 1. JavaScript原型继承 提到JavaScript原型,用处最多的场景便是实现继承.然而在实现继承时总有一些细节处理不到位,引起一些看起来莫名其妙的问题.比如使用下述代码: function Animal(){} Animal.prototype = {}; func…
在工作中有时候会看到prototype和__proto__这两个属性,对这两个属性我一直比较蒙圈,但是我通过查阅相关资料,决定做一下总结加深自己的理解,写得不对的地方还请各位大神指出. 跟__proto__属性相关的两个方法 判断属性是存在实例对象中,还是存在原型对象中的方法 获取或遍历对象中属性的几种方法 1.prototype 每个函数都有一个prototype属性,该属性是一个指针,指向一个对象. 而这个对象的用途是包含由特定类型的所有实例共享的属性和方法.使用这个对象的好处就是可以让所有…
既typeof之后的另一位老朋友! prototype也是我们的老朋友,即使不了解的人,也应该都听过它的大名.如果它还是您的新朋友,我估计您也是javascript的新朋友. 在咱们的第一节(深入理解javascript原型和闭包(1)——一切都是对象)中说道,函数也是一种对象.他也是属性的集合,你也可以对函数进行自定义属性. 不用等咱们去试验,javascript自己就先做了表率,人家就默认的给函数一个属性——prototype.对,每个函数都有一个属性叫做prototype. 这个proto…
1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念却不一样. JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程. 原型是指当我们想要创建一个具体对象时,并没有像Java中那样有类可以使用,但是却可以利用类似"继承"的方式,这里类似"父类"的对象,就是所谓的原型.(再简单点:…