美文网首页
JavaScript 定义对象方式汇总

JavaScript 定义对象方式汇总

作者: 漫步星空下 | 来源:发表于2018-10-24 22:00 被阅读2次
1. 扩展已有对象的属性和方法
var object = new Object();
    object.name = 'zhangsan';
    object.age  = 20 ;
    object.getInfo = function () {
        alert( 'Name : ' + this.name + ' Age : ' + this.age );
    }
    object.getInfo();
2. 工厂方法
function createObject(name, age) {

        var object = new Object();
        object.name = name ;
        object.age = age ;
        object.getInfo = function () {
            alert("Name : " + this.name + " Age : " + this.age );
        }
        return object ; // 将创建好的对象返回
    }

    var obj1 = createObject("Michael Chen",100);
    obj1.getInfo();
2.1 改进的工厂方法,同一个方法对象被所有创建出来的对象共享
function createObject(name, age) {
        var obj = new Object();
        obj.name = name ;
        obj.age = age ;
        obj.getInfo = get ;
        return obj ;
    }

    function get() {
        alert('Name : ' + this.name + 'Age : ' + this.age);
    }

    var obj1 = createObject('Jackson',30);
    obj1.getInfo();
3. 构造函数方式创建对象
function person(name , age) {
// 在执行第一行代码前,js 引擎会为我们生成一个对象
         this.name = name;
         this.age = age ;
         this.getInfo = function () {
             alert(" Name : " + this.name + " Age : " + this.age );
         }
// 此处有一个隐藏的 return 语句,用于将之前生成的对象返回 
    }

    var person1 = new person("Michael","24");
    person1.getInfo();
4. 原型方式( prototype )创建对象
    function Person() {

    }

    Person.prototype.name = "zhangsan";
    Person.prototype.age = 13 ;
    Person.prototype.scores = new Array();
    Person.prototype.getPersonInfo = function () {
        alert( "Name : " + this.name + " Age : " + this.age + this.scores[0] + this.scores[1] + this.scores[2] );
    }
    var person = new Person();
    person.scores.push("语文:59");
    person.scores.push("数学:100");
    person.scores.push("英语:100");
    person.getPersonInfo();

使用原型创建对象的缺陷:

  1. 无法动态为对象赋值,需要在对象被创建以后赋值 ;
  2. 创建的对象共享属性 ;
4.1 构造方法 + 原型 创建对象
function Person( name , age ){
        this.name = name ;
        this.age = age ;
    }

    Person.prototype.getInfo = function(){
        alert('Name : ' + this.name  + 'Age : ' + this.age );
    }

    var p1 = new Person('James',34);
    p1.getInfo();
5. 动态原型方式创建对象
function Person() {
        this.name = "zhangsan";
        this.age = 12 ;
        if (typeof Person.flag == "undefined") {
            Person.prototype.getPersonInfo = function () {
                alert("Name : " + this.name + " Age : " + this.age);
            }
            Person.flag = true ;
        }
    }
  
    var p1 = new Person();
    p1.name = "Jack";
    p1.age = 22 ;
    p1.getPersonInfo();

相关文章

网友评论

      本文标题:JavaScript 定义对象方式汇总

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