• js之对象创建方式


    js中对象创建方式有多种,最常见的就是调用Object构造函数,下面我们来列举对象的创建的方式

    一、Object构造

                 var Dog = new Object();
                 Dog.name = "peter";
                 Dog.bark =function(){
                 console.log(" my name is "+Dog.name);
                 }
                 Dog.bark();//输出my name is peter

    此方法是最常见的生成方式,但不能指定想要的对象类型

    二、字面量构造

                   var Cat = {
                     name:"tony",
                     age :"5",
                    bark : function(){
                        console.log("i am a cat" );
                     }
                   }
                   Cat.bark();

    此方法是上面的补充,他与new Object()没有区别

    三、工厂模式创建

                   function createObj(name,age){
                        var obj = new Object();
                        obj.name = name;
                        obj.age = age;
                        obj.bark = function(){
                            console.log("hello i am createObj,i am "+obj.age+" old");
                        }
                        return obj; //返回一个obj
                    }  

                      var obj = createObj("pony","33");
                      obj.bark();

    此方法适合批量生成对象,避免代码重复,但问题和第一个一样,不能判断对象类型,因为都是基类Object

    四、构造函数创建

                      function Person(name,age){
                          this.name = name;
                          this.age  = age;
                          this.bark = function(){
                              console.log("hello i am construct");
                          }
                      }
                      var child = new Person("sily","18");
                      console.log(child.name);

    此方法中的new关键字很重要,首先他会在内部常见一个object赋给this 然后通过this绑定变量和方法,最后隐式的return this 出去。

    此方法的缺点是每次创建对象的时候后都会生成相应的方法,浪费内存

    五、原型创建

                      function Animal(){}
                      Animal.prototype.name = "peter";
                      Animal.prototype.age  =  10;
                      Animal.prototype.bark = function(){
                          console.log("hello, i am a prototype function");
                      }
                      var fish = new Animal();
                      fish.bark();

    该方法创建的对象,都在原型链上,所有实例共享,也就是说,一旦有实例修改了该方法,则所有实例的该方法都会改变,但大多数时候我们还是需要私有方法和属性,说以一般都用原型构造这种组合模式来创建对象

  • 相关阅读:
    XFrameOption
    304缓存的原理
    跨域以及实现跨域的方法
    Pytorch中RNN参数解释
    Pytorch实现LeNet
    Pytorch自定义数据集
    Pytorch模型保存和加载
    Pytorch如何约束和限制权重/偏执的范围
    单调神经网络《 Monotonic Networks》及代码实现
    k8s pod报错Process failed to launch spawn E2BIG
  • 原文地址:https://www.cnblogs.com/maoxiaodun/p/10012321.html
Copyright © 2020-2023  润新知