js创建对象

简介: js创建对象


1. 对象字面量

var obj={
    name:'syl',
    height:'175',
    say:function(){
        console.log('hello');
    }
}

缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高

2. 内置构造函数

2.1 直接使用Object();

var obj=new Object({
    name:'syl',
    height:'175',
    say:function(){
        console.log('hello');
    }
});

缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高

2.2 封装Object()—工厂模式

function createObj(name,height){
  var obj=new Object({
      name:'syl',
      height:'175',
      say:function(){
          console.log(this.name);
      }
  });
  return obj;
}

缺点:对象无法识别,因为所有的实例都指向一个原型。

3. Object.create()

 var p = {
    name:'syl',
    height:'175',
    say:function(){
        console.log(this.name);
    }
};
var obj = Object.create(p);

4 构造函数

function P(name,height){
  this.name=name;
  this.height=height;
  this.say=function(){
    console.log(this.name);
  };
}
var obj=new P('syl','175'); 
obj.sayHeight()=function(){
  console.log(this.height);
}

缺点:构造函数中定义函数,那么每次创建对象,都会重新创建该函数,这样会导致全局变量增多。

原型

function P(name,height){
  this.name=name;
  this.height=height;
}
P.prototype.say=function(){
  cosole.log(this,name);
}
var obj=new P('syl','175'); 
p.say();

将函数放到原型中,解决了构造函数方法的缺点。


相关文章
|
5月前
|
JavaScript 安全 前端开发
js创建对象的七种方式
js创建对象的七种方式
|
8月前
|
JavaScript 前端开发
JavaScript 使用对象字面量创建对象、使用new Object创建对象
JavaScript 使用对象字面量创建对象、使用new Object创建对象
73 0
|
8月前
|
JavaScript 前端开发 Java
JavaScript创建对象和封装
JavaScript创建对象和封装
48 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十五天-js-创建对象的两种方式1
前端学习笔记202306学习笔记第三十五天-js-创建对象的两种方式1
30 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十五天-js-创建对象的两种方式2
前端学习笔记202306学习笔记第三十五天-js-创建对象的两种方式2
28 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十六天-js-利用构造器的形式创建对象
前端学习笔记202306学习笔记第三十六天-js-利用构造器的形式创建对象
750 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十六天-js-创建对象的n个方式3
前端学习笔记202306学习笔记第三十六天-js-创建对象的n个方式3
29 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十六天-js-创建对象的n个方式1
前端学习笔记202306学习笔记第三十六天-js-创建对象的n个方式1
30 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十六天-js-创建对象的n个方式2
前端学习笔记202306学习笔记第三十六天-js-创建对象的n个方式2
27 0
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(下)---继承模式
js对象的创建对象模式和继承模式(下)---继承模式
76 0