美文网首页
创建对象的方法

创建对象的方法

作者: 小王啊_ | 来源:发表于2017-07-11 14:52 被阅读0次

    字面量创建对象

    var obj = {
      name: '小王',
      age: '26',
      gender: 'male'
    }
    

    工厂方法

    function createPerson (name, age, gender) {
      var obj = new Object();
      obj.name = name;
      obj.age = age;
      obj.gender = gender;
      obj.sayName = function () {
        console.log(name);
      }
      return obj;
    }
    
    var person1 = createPerson('小王', 29, '男');
    var person2 = createPerson('小沈', 24, '男');
    

    构造函数

    function Person(name, age, gender) {
      this.name = name;
      this.age = age;
      this.gendr = gender;
      this.sayName = function () {
        console.log(this.name);
      }
    }
    
    var person1 = new Person('小王', 29, '男');
    var person2 = new Person('小沈', 24, '男');
    

    使用构造函数的缺点: 每次创建示例方法都需要重新创建一遍。这时候,改造下构造函数:

    
    function Person(name, age, gender) {
      this.name = name;
      this.age = age;
      this.gendr = gender;
      this.sayName = sayName();
    }
    
    function sayName() {
      console.log(this.name);
    }
    
    

    现在我们共享了一个全局函数,避免了重复创建同一个函数,但是当构造函数需要很多函数,我们就需要创建很多全局函数,这样就毫无封装性可言。所以我们引入原型模式。

    原型模式

    function Person(name, age, gender) {
      this.name = name;
      this.age = age;
      this.gendr = gender;
    }
    
    Person.prototype.sayName = function () {
      console.log(this.name);
    }
    
    

    扩展

    判断是否是原型属性

    function hasPrototypeProperty(obj, pro) {
      return !obj.hasOwnProperty(pro) && (pro in obj);
    }
    

    相关文章

      网友评论

          本文标题:创建对象的方法

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