javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON;方法很多,也能混合使用。

  • 对象字面量的方式:

    var person={name:"SF",age:25say:function(){alert(this.name+"今年"+this.age);}
    };
    person.say();
  • 创建Object实例:

    var my = new Object();
    my.name = "SF"; //JavaScript的发明者
    my.age = 25;
    my.say = function() { alert("我是"+this.name+"今年"+my.age);
    }
    my.say();

    *属性是可以动态添加,修改的

  • 构造函数

    • 无参构造函数

      function Person(){}
      var person = new Person();
      person.name = "SF";
      person.age = "25";
      person.say = function() {alert("My name is " + person.name);
      }
      person.say();
    • 有参构造函数

      function Person(name,age) { this.name = name; this.age = age; this.say = function() { alert("我叫" + this.name + ",今年" + this.age + "岁); }
      }
      var my = new Person("SF",25); //实例化、创建对象
      my.say(); //调用say()方法

      由于this指针在对象实例的时候发生改变指向新的实例。这时新实例的方法也要重新创建,如果n个实例就要n次重建相同的方法。

  • 工厂模式

    function creatPerson(name,age){var person = new Object();person.name=name;person.age=age;person.say=function(){alert(this.name+"今年"+this.age+"岁");};return person;};var my = creatPerson('SF',25);//实例化my.say();//调用
  • 原型方式

    function Person(name,age){}
    Person.prototype.name = "SF";
    Person.prototype.age = 25;
    Person.prototype.say = function() { alert(this.name+"是我的名字");
    }
    var my = new Person();
    my.say();
    让我们先了解下原型:
    

    首先,每个函数都有一个prototype(原型)属性,这个指针指向的就是Person.prototype对象。而这个原型对象在默认的时候有一个属性constructor,指向Person,这个属性可读可写。而当我们在实例化一个对象的时候,实例my除了具有构造函数定义的属性和方法外(注意,只是构造函数中的),还有一个指向构造函数的原型的指针,ECMAScript中叫[[prototype]],这样实例化对象的时候,原型对象的方法并没有在某个具体的实例中,因为原型没有被实例。所以这种模式定义的对象,在调用方法的时候过程:调用my.say();先看实例中有没有,有调之,无追踪到原型,有调之,无出错,调用失败。

    上面代码等同
    function Person(name,age){}
    Person.prototype={constructor:Person,   //必须手动设置这个属性,否则没有实例共享原型的意义了。name:"SF",age:25,say:function(){alert(this.name+"是我的名字");}
    }
    var my = new Person();
    my.say();
  • 混合方式 (构造函数+原型)

    function Person(name,age) {this.name = name;this.age = age;
    }
    Person.prototype.say = function() { alert("我是"+this.name+",今年"+this.age);
    }
    var my = new Person("SF","25");
    my.say();

在Js中创建对象的几种方式相关推荐

  1. JS中创建对象:三种方式(pink)

    在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object): (1)利用字面量创建对象 (2)利用new Object创建对象 (3)利用构造函数创建对象

  2. Js中自定义对象四种方式

    Js中自定义对象四种方式 1 类似JAVA有参构造方式: 1.定义对象: function 对象(属性[age]){追加属性:如(this.age = age)[this代表当前对象的地址值的引用]追 ...

  3. 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  4. Java中创建对象的几种方式

    Java中创建对象的几种方式 1.使用new创建对象,在堆上创建. 2.克隆 3.反序列化 4.反射创建对象 5.NIO中可以使用本地方法直接分配堆外内存. 转载于:https://www.cnblo ...

  5. Java中创建对象的四种方式

    为什么80%的码农都做不了架构师?>>>    Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法.    (2) 运用反射手段,调用java.l ...

  6. JS 面向对象 ~ 创建对象的 9 种方式

    一.创建对象的几种方式 1.通过字面量创建 var obj = {};这种写法相当于:var obj = new Object(); 缺点:使用同一个接口创建很多单个对象,会产生大量重复代码 2.通过 ...

  7. Java中创建对象的5种方式 -[转] http://www.codeceo.com/article/5-ways-java-create-object.html...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  8. java method 创建_java中创建对象的5种方式

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法. Java中有5种创建对象的方法,下面列出例子还有他们的字节码: 使用n ...

  9. Java中创建对象的5种方式

    转载 https://www.cnblogs.com/wxd0108/p/5685817.html 作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然 ...

  10. java中创建对象的方式有哪些,Java中创建对象的四种方式

    四种方式: http://wenku.baidu.com/link?url=mv6VbMd3d-aCkbGMhn6rbLwFbef7v60nRbyA-thP6Y7hqtjiv0K0_kdtfOWaUj ...

最新文章

  1. 智能待办,让老师真正的快乐
  2. 【算法+OpenCV】图像极坐标变换及基于OpenCV的实现
  3. 硬核艿艿,新鲜出炉,直接带你弄懂 Spring Boot Jar 启动原理!
  4. Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
  5. Vim文本编辑器 指令簿(二)
  6. 量子化学计算机理,几种化学反应机理的量子化学理论计算
  7. 用python爬取微信公众号文章
  8. 软件质量保证与测试 问答题
  9. 用jsp代码完成购物车并且实现添加功能
  10. 什么是深度学习的视频标注?
  11. Color RGB颜色深浅的排序
  12. 手机网页版微信分享以及微信授权
  13. 房屋安全鉴定现场检测主要检测哪些内容
  14. 入门量化分析(金融)的一些建议
  15. 如何动态创建水晶报表
  16. split函数的用法——java
  17. 2019年3月5日-MPU9250使用(二)
  18. Mac安装多版本java
  19. 大根堆、小根堆(数组模拟操作)
  20. 关于nbsp的一点笔记

热门文章

  1. 函数指针还是c++虚函数_C和C++哪个效率更高?
  2. merge r语言daframe_R语言:数据框
  3. 微信小程序报错 TypeError: Cannot read property ‘setData‘ of undefined
  4. Mysql查询某列最长字符串记录
  5. java trimprefix_MyBatis动态SQL中的trim标签的使用方法
  6. JAVA加载一个目录下有依赖关系本地库的通用代码
  7. 手机进程多了,有的进程就无法联网?
  8. 万恶的WIN10,已有的VirftualBox虚拟机都不能用了
  9. H264 SPS中得到宽高的代码(java/c),测试通过
  10. priority_queue的优先级设置