zoukankan      html  css  js  c++  java
  • (二)JavaScript之原型到原型链

    每个函数都有一个 prototype 属性;并且prototype是函数才会有的属性

    函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型;每一个对象都会从原型"继承"属性

    function Cat() {
    
    }
    Cat.prototype.name = '布丁';
    var cat1 = new Cat();
    var cat2 = new Cat();
    console.log(cat1.name) // 布丁
    console.log(cat2.name) // 布丁
    

    函数的prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是上面例子重中的cat1和cat2的原型;即Cat.prototype是原型。那么,实例化出来的对象与原型什么关系呢?
    每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__,这个属性会指向该对象的原型。即

    	cat1.__proto__ === Cat.prototype
    

    原型都有一个 constructor 属性指向关联的构造函数,即:

    	Cat === Cat.prototype.constructor
    

    当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。

    简而言之的总结:
    • Cat.prototype === cat1.__proto__ 	//该对象原型得出的相等关系
      
    • Cat === Cat.prototype.constructor		//方法等于原型的构造器
      
    • 读取实例的属性时会去去找原型的原型,一直找到最顶层为止;原型也是对象
      
    • Function.prototype 和 Object.prototype 是两个特殊的对象等于null,由引擎来创建
      
  • 相关阅读:
    C#中的global::system***命名空间别名限定符
    返回一个整数数组中最大子数组的和
    敏捷开发概述
    单词查找排序输出
    关于电梯调度的设计
    关于电梯调度的一些想法
    C#中抽象类和接口的区别
    SharePoint2010列表表单:用后台代码生成表单
    外刊IT评论:远离.net
    程序员:编程给你现实生活带来了哪些坏习惯
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675345.html
Copyright © 2011-2022 走看看