javascript
2016-07-16 17:37
621 查看
1.其实很多人认为js是一门解释性语言,但实际它是一门编译语言,只是与传统编译语言有所不同而已,这里不再细说.......
2.js面向对象
封装
继承
多态
JavaScript是一款基于原型模式的面向对象语言
为了更好达到封装效果,可以通过一个function来统一构建一个势力
var zs=new test("zs",34);
document.write(tom.startWork == zs.startWork) //false
我们还可以发现tom和zs的startWork并不指向不一个内存,也就意味着,当我们有很多实例的时候,内存开销会非常大
仅仅通过构造函数创建实例,他们的成员并不共用,很明显这不是一个好的实现方法。
prototype:原型。任何类型都会有属于自己的原型,并且原型上定义的成员,可以在每个实例中引用,并且是共用的
那么在设计JavaScript面向对象类型的时候,我们一般遵循以下规则:
因为实例不同而不同的内容,用this关键字声明
无论实例怎样内容完全相同的成员,定义在prototype上
2.js面向对象
封装
继承
多态
JavaScript是一款基于原型模式的面向对象语言
为了更好达到封装效果,可以通过一个function来统一构建一个势力
function test(name,age){ return { name : name, age : age, male: false, startWork : function(){ // code here; } }; };这样更像构造函数:
function test(name,age){ this.name = name; this.age = age; this.male= false;
<span style="white-space:pre"> this.startWork = function(){ <span style="white-space:pre"> </span>if(this.isWorking) return; <span style="white-space:pre"> </span>this.isWorking = true; <span style="white-space:pre"> </span>};</span> } //通过new关键字实例化 var tom = new test("tom", 24);
var zs=new test("zs",34);
document.write(tom.startWork == zs.startWork) //false
我们还可以发现tom和zs的startWork并不指向不一个内存,也就意味着,当我们有很多实例的时候,内存开销会非常大
仅仅通过构造函数创建实例,他们的成员并不共用,很明显这不是一个好的实现方法。
prototype:原型。任何类型都会有属于自己的原型,并且原型上定义的成员,可以在每个实例中引用,并且是共用的
<pre name="code" class="javascript">function worker(name, age){ this.name = name; this.age = age; this.isWorking = false; } worker.prototype.startWork = function(){ if(this.isWorking) return; this.isWorking = true; }; worker.prototype.endWork = function(){ if(this.isWorking) return; this.isWorking = true; }; //在此处尝试定义一个endWork方法 var tom = new worker("tom", 40); var jim = new worker("jim",20);
tom.startWork == jim.startWork //true
</pre><pre>
那么在设计JavaScript面向对象类型的时候,我们一般遵循以下规则:
因为实例不同而不同的内容,用this关键字声明
无论实例怎样内容完全相同的成员,定义在prototype上
相关文章推荐
- js实现继承的5种方式
- 推荐几款JS表格控件
- JSP基础概要
- JSP基础概要
- JSP基础概要
- JavaScript 字符串
- seaJs
- javaScript--05 DOM基础 12.8
- javaScript--05 DOM基础 12.7
- javaScript--05 DOM基础 12.6
- javaScript--05 DOM基础 12.5
- javaScript--05 DOM基础 12.4
- javaScript--05 DOM基础 12.3
- javaScript--05 DOM基础 12.2
- JavaScript--05 DOM基础 12.1
- JSX,Html语法需注意的部分
- Ejs
- Javascript 定义命名空间,减少全局变量污染
- js 关于BOM浏览器兼容问题 函数封装
- Javascript-网页编程-DHTML-下拉菜单