JavaScript 定义类或对象
来源:互联网 发布:unity3d 场景 编辑:程序博客网 时间:2024/05/11 16:14
如果在搜索引擎搜JavaScript自定义类的内容,一大堆的无用信息。很多都是到处抄代码,一问就是贴了一篇源代码,说的又不准确。还是老实的看在线文档,推荐w3School.
动态原型方法
对于习惯使用其他语言的开发者来说,使用混合的构造函数/原型方式感觉不那么和谐。毕竟,定义类时,大多数面向对象语言都对属性和方法进行了视觉上的封装。请考虑下面的 Java 类:
class Car { public String color = "blue"; public int doors = 4; public int mpg = 25; public Car(String color, int doors, int mpg) { this.color = color; this.doors = doors; this.mpg = mpg; } public void showColor() { System.out.println(color); }}
Java 很好地打包了 Car 类的所有属性和方法,因此看见这段代码就知道它要实现什么功能,它定义了一个对象的信息。批评混合的构造函数/原型方式的人认为,在构造函数内部找属性,在其外部找方法的做法不合逻辑。因此,他们设计了动态原型方法,以提供更友好的编码风格。
动态原型方法的基本想法与混合的构造函数/原型方式相同,即在构造函数内定义非函数属性,而函数属性则利用原型属性定义。唯一的区别是赋予对象方法的位置。下面是用动态原型方法重写的 Car 类:
function Car(sColor,iDoors,iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("Mike","John"); if (typeof Car._initialized == "undefined"
) { Car.prototype.showColor = function() { alert(this.color); };Car._initialized = true;
}}
TIY
直到检查 typeof Car._initialized 是否等于 “undefined” 之前,这个构造函数都未发生变化。这行代码是动态原型方法中最重要的部分。如果这个值未定义,构造函数将用原型方式继续定义对象的方法,然后把 Car._initialized 设置为 true。如果这个值定义了(它的值为 true 时,typeof 的值为 Boolean),那么就不再创建该方法。简而言之,该方法使用标志(_initialized)来判断是否已给原型赋予了任何方法。该方法只创建并赋值一次,传统的 OOP 开发者会高兴地发现,这段代码看起来更像其他语言中的类定义了。
来源:w3school
- JavaScript 定义类或对象
- javascript定义类或对象
- JavaScript 定义类或对象
- JavaScript定义类或对象
- JavaScript中定义类或对象
- JavaScript中定义类或对象
- JavaScript如何定义类或对象
- ECMAScript(JavaScript) 定义类或对象
- javascript初学者记录--定义类或对象
- ECMAScript(JavaScript) 定义类或对象
- JavaScript中定义类或对象
- javaScript中定义类或对象的五种方式
- javaScript中定义类或对象的五种方式
- javascript定义类或对象的四种方式
- Javascript定义类或对象之动态原型法
- JavaScript之定义类或对象六种方式
- javascript定义类或对象的几种方式
- JavaScript之定义类或对象六种方式
- 插入排序
- 嫣然一笑苦了情
- 一起学DNS系列(一)基础、概览
- Phong模型
- android 开发之旅 helloworld
- JavaScript 定义类或对象
- 伪代码约定
- 在worldpress中使用php代码抓取图书馆书籍信息
- redhat和ubuntu下的系统运行级别,服务的启动
- 123
- Java正则表达式教程
- 实时输入框,相当于VB的change()事件
- VirtualBox: Fatal: Could not read from Boot Medium! System Halted 解决方法
- 一起学DNS系列(十一)DNS服务器属性之高级服务器选项