1.初级创建对象

    var oCar=new Object;
oCar.color='red';
oCar.door=4;
oCar.map=3;
oCar.showColor=function () {
// body...
alert(this.color);
}
console.log(oCar);
缺点:需要创建多个Car实例

2.工厂函数创建对象

   function showColor(){
alert(this.color)
}
function createCar(sColor,iDoors,iMpg) {
var oTempCar=new Object;
oTempCar.color=sColor;
oTempCar.door=iDoors;
oTempCar.mpg=iMpg;
oTempCar.showColor=showColor;
return oTempCar;
}
var oCar1=createCar('red',2,23);
oCar1.showColor();

缺点:看起来不像是对象的方法

3.构造函数创建对象

    function Car(sColors,iDoors,iMpg) {
// body...
this.color=sColors;
this.iDoors=iDoors;
this.iMpg=iMpg;
this.showColor=function(){
alert(this.color);
}
} var oCar1=new Car('red',4,23);
var oCar2=new Car('blue',5,24)

优点:内部不需要创建对象,this直接可以访问; 缺点:会重复生成函数

4.原型方式创建对象

   function Car() {
// body...
}
Car.prototype.color='red';
Car.prototype.doors=4;
Car.prototype.mpg=23;
Car.prototype.drivers=['wang','xia'];
Car.prototype.showColor=function(){
alert(this.color);
} var oCar1=new Car();
var oCar2=new Car(); oCar1.drivers.push('yun'); console.log(oCar2.drivers);

缺点:没有参数,属性指向对象,对象共享,Car1修改,Car2也会跟着修改

5.混合构造/原型方式


   function  Car(sColor,iDoor,iMpg) {
this.color=sColor;
this.doors=iDoor;
this.mpg=iMpg;
this.drivers=new Array("Mike","Sue");
} Car.prototype.showColor=function(){
alert(this.color)
} var oCar1=new Car('red',4,23);
var oCar2=new Car('blue',5,24); oCar1.drivers.push('yun');
console.log(oCar1.drivers);
console.log(oCar2.drivers);

构造函数定义非函数属性;原型定义函数属性

6.动态原型方式


   function Car(sColor,iDoor,iMpg){
this.color=sColor;
this.door=iDoor;
this.mpg=iMpg;
this.driver=new Array('Mike','Sue'); if(typeof Car._initialized=="undefined"){
Car.prototype.showColor=function(){
alert(this.color);
}
} Car._initialized=true;
}

JavaScript面向对象:创建对象的更多相关文章

  1. Javascript面向对象——创建对象、构造函数的原型

    Javascript面向对象--创建对象.构造函数的原型 其实:JavaScript中的创建类,就是创建一个构造函数,在创建对象时用到new这个关键字, 一.创建对象 1.函数创建对象 functio ...

  2. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  3. JavaScript学习总结(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  4. javascript面向对象系列第四篇——选项卡的实现

    前面的话 面向对象的应用并非只是读几本书那么容易,需要有大量的工程实践做基础才能真正理解并学会使用它.本文将用面向对象的技术来制作一个简单的选项卡 图示说明 由图示结果看到,这是一个非常简单的选项卡. ...

  5. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  6. javascript面向对象系列第一篇——构造函数和原型对象

    × 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...

  7. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  8. JavaScript 面向对象(二) —— 案例篇

    看案例前可以先看看基础篇:JavaScript 面向对象(一) —— 基础篇 案例——面向对象的选项卡:把面向过程的程序一步步改成面向对象的形式,使其能够更加的通用(但是通用的东西,一般会比较臃肿). ...

  9. JavaScript 面向对象(一) —— 基础篇

    学好JS的面向对象,能很大程度上提高代码的重用率,像jQuery,easyui等,这篇博客主要从细节上一步步讲JS中如何有效地创建对象,也可以看到常见的创建对象的方式,最后也会附上一些JS面向对象的案 ...

随机推荐

  1. lambda应用

    def test(a, b, func): result = func(a, b) print(result) test(10, 15, lambda x, y: x + y) #coding=utf ...

  2. 22.文本框验证和外部url的调用

    面板可以右键固定到浏览器并且横向纵向都剧中 如果要在图片上进行点击或者其他操作 可以覆盖一个图片热区或者矩形(透明的)充当一个按钮的操作 这个提示的图片是默认隐藏的 通过右上角那个隐藏的勾 文本框右边 ...

  3. CCNA 学习记录(三)通过仿真理解ARP协议

    拓扑图 配置 路由器R2: GigabitEthernet 0/0/0 IP Address: 192.168.1.1 Subnet Mask: 255.255.255.0 Serial 0/1/0 ...

  4. Tangram: Optimized Coarse-Grained Dataflow for Scalable NN Accelerators 阅读笔记

    目录 Tangram: Optimized Coarse-Grained Dataflow for Scalable NN Accelerators 1.Abstract 2.Introduction ...

  5. 【题解】CTS2019珍珠(二项式反演+卷积)

    [题解]CTS2019珍珠 题目就是要满足这样一个条件\(c_i\)代表出现次数 \[ \sum {[\dfrac {c_i } 2]} \ge 2m \] 显然\(\sum c_i=n\)所以,而且 ...

  6. 「洛谷P3931」 SAC E#1 - 一道难题 Tree

    P3931 SAC E#1 - 一道难题 Tree 题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是 ...

  7. [AI开发]零代码分析视频结构化类应用结构设计

    视频结构化类应用涉及到的技术栈比较多,而且每种技术入门门槛都较高,比如视频接入存储.编解码.深度学习推理.rtmp流媒体等等.每个环节的水都非常深,单独拿出来可以写好几篇文章,如果没有个几年经验基本很 ...

  8. P2871 [USACO07DEC]手链Charm Bracelet(01背包模板)

    题目传送门:P2871 [USACO07DEC]手链Charm Bracelet 题目描述 Bessie has gone to the mall's jewelry store and spies ...

  9. 【转】7本免费的Java电子书和教程

    本文由 ImportNew - 唐小娟 翻译自 Javapapers.如需转载本文,请先参见文章末尾处的转载要求. 1. Thinking in Java (Third Edition) 本书的作者是 ...

  10. Serverless 微服务实践-移动应用包分发服务

    背景 阿里云函数计算是事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.函数计算会为您准备好计算资源,以弹性.可靠的方式运行您的代码,并提供日志查询.性能监控.报 ...