`
heicx_sudo
  • 浏览: 6651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript继承机制__proto__与prototype

 
阅读更多

  所有构造器(Function类)/函数都具有prototype属性,每个原型对象都会对应相应的__proto__,

普通字面量对象不包含prototype属性,但包含__proto__属性。

 

__proto__属性始终指向原型对象的prototype,如下:

	function Person(name, age){
	  this.name = name;
	  this.age = age;
	}

	Person.prototype.getName = function(){
	  return this.name;
	}

	Person.prototype.setName = function(name){
	  this.name = name;
	}

	var Man = {};
	Man.__proto__ = new Person("Jobs", 35);
	console.log(Man.getName());

	var Female = function(){};
	Female.prototype = new Person("Bill", 45);
	var female = new Female();
	console.log(female.getName());


	var Dog = {};
	Dog.__proto__.getName = function(){
		return "Docke";
	}

	console.log(Dog.getName());

总结补充:

若使用prototype属性 -> “类名.prototype”
若使用__proto__属性 -> “实例.__proto__”
它们两个其实是同一个东西。

通过实例得到类名的代码是“实例.counstructor”,即“实例.counstructor===类名”
因为 实例.__proto__===类名.prototype
而且 实例.counstructor===类名
所以 实例.__proto__===实例.counstructor.prototype
所以 __proto__是counstructor.prototype的缩写。

 

1
2
分享到:
评论

相关推荐

    跟我学习javascript的prototype,getPrototypeOf和__proto__

    C.prototype: 一般用来为一个类型建立它的原型继承对象。比如C.prototype = xxx,这样就会让使用new C()得到的对象的原型对象为xxx。当然使用obj.prototype也能够得到obj的原型对象。 getPropertyOf: Object....

    【JavaScript源代码】JavaScript中的几种继承方法示例.docx

    JavaScript中的几种继承方法示例  1.原型链继承  原理: 子类原型指向父类实例对象实现原型共享,即Son.prototype = new Father()。 这里先简单介绍下原型 js中每个对象都有一个__proto__属性,这个属性指向的...

    构造函数定义对象+prototype继承的实现.html

    构造函数定义对象+prototype继承的实现,含CSS样式

    java学习之JavaScript继承

    然而,继承中所涉及的不仅仅是一个对象,并且 js 也没有继承这一现有的机制,那它如何实现的呢? 原型 在 JavaScript 中,每个构造函数都拥有一个prototype属性,它指向构造函数的原型对象,这个原型对象中有一个 ...

    前端Javascript相关面试基础问答整理md

    10. prototype与__proto__的关系与区别 11. 继承的实现方式及比较 12. 深拷贝与浅拷贝 13. 防抖和节流 14. 作用域和作用域链、执行期上下文 15. DOM常见的操作方式 16. Array.sort()方法与实现机制 17. Ajax 17. ...

    javascript教程之不完整的继承(js原型链)

    Javascript的继承和标准的oop继承有很大的区别,Javascript的继承是采用原型链的技术,每个类都会将“成员变量”和“成员函数”放到 prototype 上,Js++都过superclass将其链接起来,即 C.prototype.superclass = C....

    JavaScript中的原型继承基础学习教程

    在JavaScript中,继承是基于原型的(prototype-based),这意味着JavaScript中没有类,取而代之的是一个对象继承另一个对象。:) 1. 继承, the proto 在JavaScript中,当一个对象rabbit继承另一了对象animal时,这...

    JavaScript常见继承模式实例小结

    JavaScript中并没有传统的面向对象语言中的类的概念,但是却实现了特殊的继承机制。 (阅读此文您首先需要知道原型的知识) 先来说说第一种继承方式,原型链继承。 一. 原型链继承 所谓原型链继承,就是让父类的一个...

    再谈javascript原型继承

    在Javascript中,每个函数都有一个原型属性prototype指向自身的原型,而由这个函数创建的对象也有一个__proto__属性指向这个原型,而函数的原型是一个对象,所以这个对象也会有一个__proto__指向自己的原型,这样...

    JavaScript中的原型链prototype介绍

    JavaScript中的继承是通过原型链(prototype chain)来完成的:每个对象内部都有另外一个对象作为其prototype而存在,对象从这个prototype中继承属性(property)。对于每个对象来说,可以用以下三种方式来访问其原型...

    全面分析JavaScript 继承

    ES6之前,JavaScript并没有继承这一现有的机制。 ES5的继承方式 类式继承 //声明父类 function Father(){ this.fatherVal = 'father'; } //为父类添加共有方法 Father.prototype.getFatherValue = function(){ ...

    JavaScript中的几种继承方法示例

    1.原型链继承 原理: 子类原型指向父类实例对象实现原型共享,即Son.prototype = new Father()。 这里先简单介绍下原型 js中每个对象都有一个__proto__属性,这个属性指向的就是该对象的原型。js中每个函数都有一个...

    【JavaScript源代码】JavaScript中实现new的两种方式引发的探究.docx

    JavaScript中实现new的两种方式引发的探究  当你 new 一个构造函数时发生了什么? “众所周知”的三步: 创建一个空对象... obj.__proto__=parent.prototype; let res=parent.apply(obj,rest); return typeof re

    谈一谈javascript中继承的多种方式

    JS 是没有继承的,不过可以曲线救国,利用构造函数、原型...console.log(o.__proto__ === Object.prototype) // true 继承的本质 console.log(o.__proto__ === Object); console.log(Object.__proto__ === Function.pr

    INTERVIEW:前端面试题

    javascript语言继承机制的核心是proto。 A insctanceof B:Instanceof的判断队则是:沿着A的__proto__这条线来找,同时沿着B的prototype这条线来找,如果两条线能找到同一个引用,即同一个对象,那么就返回true。...

    javascript关于继承的用法汇总

    本文实例汇总了javascript关于继承的用法。分享给大家供大家参考。具体如下: 例子: 代码如下:/** * 实现子类继承父类,但不会产生多余的属性和方法 * @returns {Function} */ define(function(){ return function...

    JavaScript的9种继承实现方式归纳

    对象中有一个隐藏属性[[prototype]](注意不是prototype),在 Chrome 中是__proto__,而在某些环境下则不可访问,它指向的是这个对象的原型。在访问任何一个对象的属性或方法时,首先会搜索本对象的所有属性,如果找...

    Javascript原型链及instanceof原理详解

    javascript中的对象都有一个__proto__属性,这个是对象的隐式原型,指向该对象的父对象的原型(prototype)。显式的原型对象使用prototype,但是Object.prototype.proto=null; 判断某个对象a是否属于某个类A的实例,...

    理解JavaScript的prototype属性

    其实,关于prototype只要几句话就可以总结: 任何原型都是对象,只有对象有原型 只有Function有prototype属性,它是这个Function作为构造器时生成对象所继承的原型。Function的原型和它的prototype属性无关 对象的...

Global site tag (gtag.js) - Google Analytics