美文网首页
创建对象的几种方式

创建对象的几种方式

作者: Doki_455c | 来源:发表于2019-06-18 13:22 被阅读0次

字面量创建对象

var obj = {
      name: '王五',                 //属性
      study: function () {            //方法
           return this.name+"学习中"       //this指向的是方法调用者
    }
}
   obj.study()           //方法调用        

new Object() 创建对象

var obj1 = new  Object()
    obj1.name = '张三',
    obj1 : function () {
      return "学习中"
    }
//缺点:创建多个同类对象时,代码会重复 

工厂模式

 function info (name,age) {
        var obj = new Object()
        this.name = name   
        this.age = age
         return obj
}
  var obj1 = info('李四',20)            //函数调用
  var obj2 = info('王五',22)
console.log(obj1.name, obj1.age)     
console.log(obj2.name, obj2.age)   //通过传递参数输出不同的值,解决了多个同类对象创建时代码重复的问题
缺点:1、一般对象都是通过new关键字创建,工厂模式只是通过函数调用的方式 
     2、使用 instanceof不能确定某个对象属于哪一个类  
    console.log(obj1 instanceof Object)     //true
    console.log(obj2 instanceof Object)      //true

构造函数

 //写在构造函数内部的属性  叫做实例属性  方法叫做 实例方法
  function Info (name) {                 //大驼峰命名
    this.name = name                 // 构造函数内的this指向通过构造函数new出来的对象          
    this.sleep = function () {
           return  this.name + '睡觉'
    }                                
    
  }
//第一个对象
var  obj1 = new Info('我是第一个' )
//第二个对象
var obj2 = new Info('我是第二个')
//优点 : 对象创建方式规范,是通过new关键字创建的能确定某个对象属于哪一个构造函数(类)
function Info1(name) {
    this.name = name    
}
function Info2(name) {
  this.name = name  
}
var a1 = new Info1('第一个')
var a2 = new Info2('第二个')
console.log( a1 instanceof Info1)       //返回true
console.log( a1 instanceof Info1)        //返回false
//缺点 :  多个同类对象被创建时,相同的方法会被重复创建, 占用内存空间不共享

原型

//将属性和方法写在构造函数的外面
function Info () {
  
}
Info.prototype.name = '我是原型属性'         //原型属性 
Info.prototype.sleep = function () {              //原型方法
           return '在睡觉'                     
    } 
var  obj1 = new Info()  
console.log(obj1.name, obj1.sleep()) //输出'我是原型属性',我是原型方法 
 //优点 : 多个同类对象的相同方法是共享的  不会被重建 
//缺点 :  所有对象的属性名都相同                      

混合

/* 将属性写成实例属性
将方法写成原型方法
解决了上面创建对象时遇到的所有的缺点 */
function Info(name) {
    this.name = name         //实例属性   
  }
Info.prototype.sleep = function () {              //原型方法
           return this.name + '在睡觉'               //this的指向方法的调用者     
    } 
var a1 = new Info('张三')
var a2 = new Info('李四')
console.log(a1.sleep())         //张三在睡觉
console.log(a2.sleep())        //李四在睡觉

相关文章

  • 字面量方式及内置构造函数创建对象

    创建对象的几种方式 字面量方式创建对象 基本写法 ①字面量的方式来创建对象示例 存在的问题 [01] 代码复用性差...

  • 16、Java创建对象有几种方式?

    Java创建对象有几种方式? java中提供了以下四种创建对象的方式: 1、new创建新对象; 2、通过反射机制;...

  • 创建对象的几种方式

    字面量方式和Object构造函数方式创建对象 优点: 方便缺点: 当需要创建很对对象的时候,会有很多重复的代码 工...

  • 创建对象的几种方式

    第一种:对象字面量的方式 第二种:创建Object实例: 第三种:数构造函数无参数构造函数 带参数的构造函数 第四...

  • 创建对象的几种方式

    真是百看不如一练啊 /*var box= new Object(); //创建一个对象 box.name= "xi...

  • 创建对象的几种方式

    字面量创建对象 new Object() 创建对象 工厂模式 构造函数 原型 混合

  • 创建对象的几种方式

    字面量式(最常用) 调用系统的Object构造函数,创建实例对象 工厂模式 构造函数模式 与工厂模式的区别: 没有...

  • 创建对象的几种方式

    1.工厂模式 就像工厂里做好的模具厂一样,一个一个的返回 2、构造函数式 这种方式会经历四个步骤1.创建一个新对象...

  • 创建对象的几种方式

    1.工厂模式 使用方式 2.构造函数(缺点:每个方法需要在原型上构建一遍,重复) 使用方式及测试 3.原型模式(原...

  • 原型链相关问题

    创建对象有几种方法 使用对象字面量的方式创建 使用构造函数创建对象 使用Object.create()方法创建 原...

网友评论

      本文标题:创建对象的几种方式

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