美文网首页
关键字new能做的事情

关键字new能做的事情

作者: 凉城十月 | 来源:发表于2020-09-05 22:17 被阅读0次

    方方写的new的解析
    这篇文章基于上述链接。

    关键字new能做两件事情,
    1.添加自有属性
    2.添加共有属性

    function 士兵(id){
      //var temp = {} //1
      //this = temp //2
      //士兵.prototype = {constructor: 士兵 } //直接赋值会覆盖原有的值
      //this.__proto__ = 士兵.prototype //3
      this.ID =id, //ID不能重复
      this.生命值 = 42//自有属性
      //实际工作中不要这样写,因为__proto__不是标准属性
      //return this //4
      //语法糖
    }
    
    士兵.prototype = {
       //共有属性
      兵种: "美国大兵",
      攻击力: 5,
      行走: function(){/*走俩步的代码*/},
      ……
    }
    

    以上代码被 //掉的代码都是内部已经帮你实现的代码,可以省略不写的

    【注意一个点】
    //士兵.prototype = {constructor: 士兵 }//直接赋值会覆盖原有的值
    有两种方法解决:
    1.在 士兵.prototype的对象中重新赋值,添加 constructor: 士兵
    2.不将 士兵.prototype直接赋值,选择添加。
    士兵.prototype.兵种 = “美国大兵”
    第二种方式会麻烦一点,但是不会不小心覆盖其他的属性,推荐使用。

    例如:

    1. var object = new Object()
      自有属性:空
      共有属性:
    object.proto === Object.prototype
    
    1. var array = new Array('a','b','c')
      自有属性:0:'a' 1:'b' 2:'c',length:3
      共有属性:
    array.proto === Array.prototype
    Array.prototype.proto === Object.prototype
    
    1. var fn = new Function('x', 'y', 'return x+y')
      自有属性 :length:2, 不可见的函数体:'return x+y'
      共有属性:
    fn.proto === Function.prototype
    Array is a function
    Array = function(){...}
    Array.proto === Function.prototype
    

    相关文章

      网友评论

          本文标题:关键字new能做的事情

          本文链接:https://www.haomeiwen.com/subject/mlgajktx.html