zoukankan      html  css  js  c++  java
  • js创建对象的三种方法:文本标识法和构造器函数法和返回对象的函数

    文本标识法和定义变量差不多,像这样

    var obj = {name:'HanMM','2':'Dali'}; 

      

    函数构造器法 

    先创建一个对象函数 

    function Obj() {

    this.address='New York' ,

            this.sayHello = function (){

    return this.address; 

            } 

    然后用new关键字来穿件具体的对象

     var obj001 = new Obj();

    然后我们就可以调用对象了 

    obj.name//  HanMM

     obj['2']//Dali

    obj.sayHello();//New York 

     而如果,我们在使用构造器函数创建对象的时候忘了使用new关键字的话,像这样 var obj002=Obj();去实例化的话,其实和声明函数没有区别,由于该函数没有显式返回值,那么返回值为undefined,我们只是创建了一个函数,而非对象的实例。

    当我们想访问其中的某个属性时得到的结果也只能是 Uncaught TypeError: Cannot read property 'address' of undefined

    返回对象的函数 

      function tom(Name) { 

    return { name: Name } 

    } ;

    var obj007 = tom('王大锤') ;

    obj007.name;//   王大锤 

    obj007.constructor;// ==>> function Object();

     constructor property 构造器属性,其实就是一个指向于一个用于创建该对象的构造器函数的引用;

     也就是说function TomG(){}; var obj004= new TomG();

     obj004.constructor;// ==>> function TomG();

    而如果使用文本标识法创建的对象var tomG = {};

     tomG.constructor 相当于使用js内置构造器Objet()函数创建的,故 tomG.constructor; // ==>> function Object();

    PS其实构造器函数也是可以返回对象的,且当且仅当构造器函数返回的是对象的时候才可以当做对象使用,若返回其他类型的数据则此时的对象是this,即window;

    function Objs() {

    this.address='New York' ;

            return {  home:'London' }

    }

    var obj008 = new Objs();

    typeof obj008.address;//undefined;

    obj008.home;//London;

  • 相关阅读:
    C库函数中字符串处理函数集合(转)
    浅谈C++底层机制
    vc2008快捷键
    Delphi格式输出的用法
    Devenv 命令行开关
    DX皮肤控制
    C#格式化
    linq查询DataView
    WCF中的session用法
    VS2012clickonce发布问题
  • 原文地址:https://www.cnblogs.com/Aladingding/p/4600265.html
Copyright © 2011-2022 走看看