在Js中创建对象的几种方式
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中创建对象的几种方式相关推荐
- JS中创建对象:三种方式(pink)
在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object): (1)利用字面量创建对象 (2)利用new Object创建对象 (3)利用构造函数创建对象
- Js中自定义对象四种方式
Js中自定义对象四种方式 1 类似JAVA有参构造方式: 1.定义对象: function 对象(属性[age]){追加属性:如(this.age = age)[this代表当前对象的地址值的引用]追 ...
- 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...
- Java中创建对象的几种方式
Java中创建对象的几种方式 1.使用new创建对象,在堆上创建. 2.克隆 3.反序列化 4.反射创建对象 5.NIO中可以使用本地方法直接分配堆外内存. 转载于:https://www.cnblo ...
- Java中创建对象的四种方式
为什么80%的码农都做不了架构师?>>> Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.l ...
- JS 面向对象 ~ 创建对象的 9 种方式
一.创建对象的几种方式 1.通过字面量创建 var obj = {};这种写法相当于:var obj = new Object(); 缺点:使用同一个接口创建很多单个对象,会产生大量重复代码 2.通过 ...
- Java中创建对象的5种方式 -[转] http://www.codeceo.com/article/5-ways-java-create-object.html...
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...
- java method 创建_java中创建对象的5种方式
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法. Java中有5种创建对象的方法,下面列出例子还有他们的字节码: 使用n ...
- Java中创建对象的5种方式
转载 https://www.cnblogs.com/wxd0108/p/5685817.html 作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然 ...
- java中创建对象的方式有哪些,Java中创建对象的四种方式
四种方式: http://wenku.baidu.com/link?url=mv6VbMd3d-aCkbGMhn6rbLwFbef7v60nRbyA-thP6Y7hqtjiv0K0_kdtfOWaUj ...
最新文章
- 智能待办,让老师真正的快乐
- 【算法+OpenCV】图像极坐标变换及基于OpenCV的实现
- 硬核艿艿,新鲜出炉,直接带你弄懂 Spring Boot Jar 启动原理!
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- Vim文本编辑器 指令簿(二)
- 量子化学计算机理,几种化学反应机理的量子化学理论计算
- 用python爬取微信公众号文章
- 软件质量保证与测试 问答题
- 用jsp代码完成购物车并且实现添加功能
- 什么是深度学习的视频标注?
- Color RGB颜色深浅的排序
- 手机网页版微信分享以及微信授权
- 房屋安全鉴定现场检测主要检测哪些内容
- 入门量化分析(金融)的一些建议
- 如何动态创建水晶报表
- split函数的用法——java
- 2019年3月5日-MPU9250使用(二)
- Mac安装多版本java
- 大根堆、小根堆(数组模拟操作)
- 关于nbsp的一点笔记
热门文章
- 函数指针还是c++虚函数_C和C++哪个效率更高?
- merge r语言daframe_R语言:数据框
- 微信小程序报错 TypeError: Cannot read property ‘setData‘ of undefined
- Mysql查询某列最长字符串记录
- java trimprefix_MyBatis动态SQL中的trim标签的使用方法
- JAVA加载一个目录下有依赖关系本地库的通用代码
- 手机进程多了,有的进程就无法联网?
- 万恶的WIN10,已有的VirftualBox虚拟机都不能用了
- H264 SPS中得到宽高的代码(java/c),测试通过
- priority_queue的优先级设置