zoukankan      html  css  js  c++  java
  • prototype之初印象

    还没开始看js的时候经常会听群里的朋友说到原型,每当别人说的时候自己都不知道别人在说什么,最近在自己看书,记了点笔记,希望可以记住自己学习的印记,哪里写的不对的地方,希望路过的大牛指点一下。

    function Person(name,age,job){
      this.name=name;
      this.age=age;
      this.job=job;
      this.friend=["alice","tom","jack"];
    }//定义一个构造函数
    Person.prototype={
      constructor:Person,
      bf:"jjj",
      sayName:function(){
        console.log(this.name);
      } 
    }//通过原型给构造函数追加属性
    var person1=new Person("aaa",29,"web");
    var person2=new Person("bbb",30,"java");
    person1.bf="fafag"; //更改person1的bf属性的值
    
    console.log(person1.bf===person2.bf); ===>返回false
    console.log(person1.friend===person2.friend); ===>返回false
    console.log(person1.sayName===person2.sayName); ===>返回true

    prototype在构造函数不可更改属性的情况下用(自己的见解,比较浅显,如有不对望指正)
    可以Person.prototype给Person中的所有实例属性,每个属性可以更改该属性的值。
    friend是构造函数中固有的属性,在新建Person对像的时,新建的对象占用不同的内存地址,每个对象都有对应的构造函数中的属性。所以即使没给person1.friend和person2.friend传值,console.log(person1.friend===person2.friend)也返回false。

    而对于sayName这个属性是通过原型添加的,所有的Person对象在没有被赋予信的sayName值时,都指向Person.prototype这个内存地址。所以,console.log(person1.sayName===person2.sayName); ===>返回true

  • 相关阅读:
    debian配置apache2.4配置虚拟主机遇到的问题
    Javascript关于attachEvent和addEventListener区别与兼容写法
    图解linux下top命令的使用
    idea报错:java 不支持发行版本5
    java-访问权限
    IDEA图标含义
    IDEA生成UML类图
    idea快捷键
    idea同时运行两个main()
    idea关闭vim编辑模式
  • 原文地址:https://www.cnblogs.com/czyblog/p/4168836.html
Copyright © 2011-2022 走看看