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;

  • 相关阅读:
    大型网游全景图制作方法
    KRPano中文教程文档PDF版本下载
    KRPANO资源分析工具下载VR-FACTORY全景图
    KRPANO资源分析工具下载网展全景图
    KRPANO资源分析工具下载720THINK全景图
    遗留代码单元测试与重构的一点小体会
    Openflow Plugin学习笔记2
    Openflow Plugin学习笔记1
    直接并不简单
    DIDM源码分析
  • 原文地址:https://www.cnblogs.com/Aladingding/p/4600265.html
Copyright © 2011-2022 走看看