javascript對象的幾種生成方式

對象是一組數據和方法的組合,在正規的面相對象語言中叫封裝。在js當中對象是一種特殊的數據類型,其自己並不具有做用域的範圍,她在整個做用域中參與運算。做用域規定了變量的可見範圍,在es5及如下的es規範當中,js只有函數做用域和全局做用域。做用域主要是針對變量的執行環境,變量的搜索遵循,做用域鏈的嵌套關係。

對象的幾種生成方式

  1. 屬性追加函數

    var obj = new Object() ;
    obj.name = 'zhangsan' ;
    obj.age = 22 ;
    console.log(obj.name) ;
    console.log(obj.age) ;this

  2. 工廠方式es5

    function createObject()
    {
    let object = new Object() ;
    object.name = 'zhangsan' ;
    object.age = 22 ;
    object.sayName = function(){
    {
    console.log(this.name) ;
    }
    return Object;
    }
    let obj1 = createObject();
    let obj2 = createObject() ;
    console.log(obj1.sayName(), obj2.sayName()) ;prototype

  3. 構造函數式code

    function Person(name, age)
    {
    this.name = name ;
    this.age = age ;
    this.sayName = function()
    {
    console.log(this.name);
    }
    }
    let per1 = new Person('zangsan',22);
    let per2 = new Person('lisi', 22) ;
    per1.sayName(); //zhangsan
    per2.sayName(); //lisi對象

  4. 原型方式作用域

    function Person(){}
    Person.prototype.name = 'zhangsan';
    Person.prototype.sayName = function(){
    console.log(this.name)
    }
    let person = new Person()
    person.sayName() //zhangsan原型

  5. 混合方式io

    function Person(name, age)
    {
    this.name = name ;
    this.age = age ;
    Person.prototype.sayName = function(){
    {
    console.log(this.name);
    }
    }
    let person = new Person('zhangsan', 22) ;
    person.sayName();console

  6. 動態原型方式

    function Person(name, age)
    {
    this.name = name ;
    this.age = age ;
    if(Person.flag = undefined)
    {
    Person.prototype.sayName = function(){
    console.log(this.name);
    }
    }
    }
    let person = new Person('zhangsan', 22) ;
    person.sayName() ; //zhangsan

  7. 對象字面量方式

    let person = .{
    name : 'zhangsan',
    age : 22,
    sayName: function(){
    console.log(this.name);
    }
    }

注意:在全部對象的定義方式當中,混合方式和對象字面量的方式是比較推崇的作法  。
相關文章
相關標籤/搜索