JavaScript 创建类/对象的几种方式

鸣谢:http://www.cnblogs.com/lucas/archive/2009/03/17/1411656.html

扩展:http://www.cnblogs.com/lucas/archive/2009/03/14/1411322.html

在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。

JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。

一、由一对大括号括起来

复制代码
     var  emptyObj  =  {};
    
var  myObj  =
    {
        
' id ' 1 ,         // 属性名用引号括起来,属性间由逗号隔开
         ' name ' ' myName '
    };
    
// var m = new myObj(); //不支持
复制代码
 
  不知你注意到对象都是用 var 声明的没有,像上面的代码,就只是简单的声明一个对象,它只有一份拷贝,你不能像实例化类对象一样对它采用new操作,像上面代码的注释部分。这样就极大的限制了对象的重用,除非你建立的对象只需要一份拷贝,否则考虑用其他方法建立对象。
  下面一起看看如何访问对象的属性和方法。
复制代码
     var  myObj  =
    {
        
' id ' 1 ,
        
' fun ' function () {
            document.writeln(
this .id  +   ' - '   +   this .name); // 以"对象.属性"方式访问
        },
        
' name ' ' myObj ' ,
        
' fun1 ' function () {
            document.writeln(
this [ ' id ' +   ' + '   +   this [ ' name ' ]); // 以集合方式访问
        }
    };
    myObj.fun();
    myObj.fun1();
    
//  结果
     //  1-myObj 1+myObj 
复制代码
二、用 function 关键字模拟 class
在 function 中用 this 引用当前对象,通过对属性的赋值来声明属性。如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。
复制代码
         function  myClass() {
            
this .id  =   5 ;
            
this .name  =   ' myclass ' ;
            
this .getName  =   function () {
                
return   this .name;
            }
        }
        
var  my  =   new  myClass();
        alert(my.id);
        alert(my.getName());
        
//  结果
         //  5
         //  myclass
复制代码
三、在函数体中创建一个对象,声明其属性再返回
在函数体中创建对象可利用第一点的方法,或先 new Object(); 再为各属性赋值。
不过用这种方式创建的对象在VS2008 SP1中是没有智能提示的。
复制代码
         function  myClass() {
            
var  obj  =
            {
                
' id ' : 2 ,
                
' name ' : ' myclass '
            };
            
return  obj;
        }
        
function  _myClass() {
            
var  obj  =   new  Object();
            obj.id 
=   1 ;
            obj.name 
=   ' _myclass ' ;
            
return  obj;
        }
        
var  my  =   new  myClass();
        
var  _my  =   new  _myClass();
        alert(my.id);
        alert(my.name);
        alert(_my.id);
        alert(_my.name);

        
//  结果
         //  2
         //  myclass
         //  1
         //  _myclass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript创建对象几种方式包括: 1. 对象字面量:使用花括号{}创建一个对象,可以在其中定义属性和方法。 2. 构造函数:使用关键字new和一个函数来创建一个对象,可以在函数中定义属性和方法。 3. Object.create()方法:使用一个现有的对象作为原型来创建一个新的对象,可以在新对象中添加或修改属性和方法。 4. 工厂函数:使用一个函数来创建对象,该函数返回一个新的对象,可以在函数中定义属性和方法。 5. ES6中的:使用class关键字来定义一个,可以在中定义属性和方法,使用new关键字来创建一个对象。 ### 回答2: JavaScript是一门面向对象的脚本语言,因此创建对象在其中是非常重要和基础的一环。 JavaScript创建对象方式可以分为以下几种: 1. Object构造函数 Object是JavaScript中的内建构造函数,它可以创建一个空对象或者通过传递参数创建具有属性的对象。 例子: ``` var obj = new Object(); //创建一个空对象 var car = new Object(); //创建有属性的对象 car.brand = "BMW"; car.color = "blue"; ``` 2. 对象字面量 对象字面量是一种简便的创建对象方式,它可以直接将属性与属性值的对应关系写在一起,通过花括号{}进行标识。 例子: ``` var obj = {}; //创建一个空对象 var car = { //创建有属性的对象 brand: "BMW", color: "blue" }; ``` 3. 构造函数 可以使用函数作为模板来创建对象,这样的函数就被称为构造函数。通过使用new关键字去实例化这个函数创建一个对象。 例子: ``` function Car(brand, color) { //定义构造函数 this.brand = brand; this.color = color; } var myCar = new Car("BMW", "blue"); //实例化构造函数,创建对象 ``` 4. 原型 JavaScript的原型实现了面向对象的继承机制,对象继承其原型的属性和方法。因此可以通过原型来创建对象。 例子: ``` function Car() { //定义构造函数 } Car.prototype.brand = "BMW"; //在原型上定义属性 var myCar = new Car(); //实例化构造函数,创建对象 console.log(myCar.brand); //输出"BMW" ``` 以上是JavaScript创建对象几种方式,它们各自具有优点和适用范围。我们可以根据自己的实际需要,选择最适合的方式创建对象。 ### 回答3: JavaScript创建对象方式有多种,常用的有: 1.字面量方式:使用对象字面量创建对象 var person = { name: "John", age: 20, gender: "male", sayHello: function() { console.log("Hello, my name is " + this.name); } }; 2.构造函数方式:使用构造函数创建对象 function Person(name, age, gender) { this.name = name; this.age = age; this.gender = gender; this.sayHello = function() { console.log("Hello, my name is " + this.name); } } var person = new Person("John", 20, "male"); 3.原型方式:使用原型创建对象 function Person() {} Person.prototype.name = "John"; Person.prototype.age = 20; Person.prototype.gender = "male"; Person.prototype.sayHello = function() { console.log("Hello, my name is " + this.name); } var person = new Person(); 4.简单工厂方式:通过一个工厂函数创建对象 function createPerson(name, age, gender) { var person = {}; person.name = name; person.age = age; person.gender = gender; person.sayHello = function() { console.log("Hello, my name is " + this.name); } return person; } var person = createPerson("John", 20, "male"); 5.构造函数和原型组合方式:使用构造函数和原型结合创建对象 function Person(name, age, gender) { this.name = name; this.age = age; this.gender = gender; } Person.prototype = { constructor: Person, sayHello: function() { console.log("Hello, my name is " + this.name); } }; var person = new Person("John", 20, "male"); 以上是JavaScript创建对象的常见方式,不同的方式都有各自的优缺点,选择合适的方式可以提高执行效率和开发体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值