Javascript 创建对象的几种方式

135 阅读1分钟

1、简单对象的创建 使用对象字面量的方式{} 创建一个对象(最简单,好理解,推荐使用) 代码如下

var Cat = {}; //JSON

Cat.name="kity"; //添加属性并赋值

Cat.age=2;

Cat.sayHello=function(){

alert("hello "+Cat.name+",今年"+Cat["age"]+"岁了"); //可以使用“.”的方式访问

属性, 也 可以使用 HashMap 的方式访问 }

Cat.sayHello(); //调用对象的(方法)函数

2、用 function(函数)来模拟 class

2.1) 创建一个对象,相当于 new 一个类的实例(无参构造函数) 代码如下

function Person(){

} var personOne=new Person(); //定义一个 function,如果有 new 关键字去"实例化",那 么该 function 可以看作是一个类

personOne.name="dylan";

personOne.hobby="coding";

personOne.work=function(){

alert(personOne.name+" is coding now...");

} personOne.work();

2.2)可以使用有参构造函数来实现,这样定义更方便,扩展性更强(推荐使用) 代码如下

function Pet(name,age,hobby){

this.name=name;//this 作用域:当前对象

this.age=age;

this.hobby=hobby;

this.eat=function(){ a

lert("我叫"+this.name+",我喜欢"+this.hobby+",也是个吃货")

}

}

var maidou =new Pet("麦兜",5,"睡觉");//实例化/创建对象

maidou.eat();//调用 eat 方法(函数)

3、使用工厂方式来创建(Object 关键字) 代码如下:

var wcDog = new Object();

wcDog.name="旺财";

wcDog.age=3;

wcDog.work=function(){

alert("我是"+wcDog.name+",汪汪汪......");

}

wcDog.work();

4、使用原型对象的方式 prototype 关键字 代码如下:

function Dog(){

}

Dog.prototype.name ="旺财";

Dog.prototype.eat = function(){

alert(this.name + "是个吃货");

}

var wangcai = new Dog();

wangcai.eat();

5、混合模式(原型和构造函数) 代码如下:

function Car(name,price){

this.name=name;

this.price=price;

}

Car.prototype.sell=function(){

alert("我是"+this.name+",我现在卖"+this.price+"万元");

}

var camry = new Car("凯美瑞",27);

camry.sell();

6、动态原型的方式(可以看作是混合模式的一种特例) 代码如下:

function Car(name,price){

this.name=name;

this.price=price;

if(typeof Car.sell=="undefined"){

Car.prototype.sell=function(){

alert("我是"+this.name+",我现在卖"+this.price+"万元");

}

Car.sell=true; }

}

var camry = new Car("凯美瑞",27);

camry.sell();