美文网首页
es5构造函数

es5构造函数

作者: 酒暖花深Q | 来源:发表于2021-05-14 12:10 被阅读0次
      function Star (uname, age) {
          this.uname = uname;
          this.age = age;
          this.sing = function () {
            console.log('I like sing songs')
          }
        }
    
    实例成员

    实例成员就是构造函数内部通过 this添加的成员,uname, age ,sing就是实例成员
    实例成员只能通过实例化对象来访问

        var ldh = new Star('刘德华', 18);
        console.log(ldh.uname);
    
    静态成员

    静态成员 指的是在构造函数本身上添加的成员
    静态成员只能通过构造函数访问

        Star.sex = 'man'
        console.log(Star.sex)   // man
    
        console.log(ldh.sex)    // undefined
    

    构造函数很好用,但是容易造成内存浪费的问题

    1.png
     var ldh = new Star();
     var zxy = new Star();
     console.log(ldh.sing === zxy.sing ) ; // false
    

    Star实例对象所分配的内存地址不一样
    我们希望所有的实例对象使用同一个函数这样比较节省内存地址,需要怎么做呢?

    原型对象
       Star.prototype.dance = function () {
         console.log('dance')
       }
       console.log(ldh.dance === zxy.dance);  // true
    
    构造函数通过原型对象分配的函数时所有对象共享的。 javascript 规定,每个构造函数都有一个 prototype属性,指向另一个对象
    注意: prototype就是一个对象,这个对象的所有属性和方法都会被构造函数所拥有

    我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法

    原型是什么: 一个对象 ,prototype原型对象,
    作用: 共享方法

    相关文章

      网友评论

          本文标题:es5构造函数

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