javascript
来源:互联网 发布:网络统考时间 编辑:程序博客网 时间:2024/06/16 07:46
1.其实很多人认为js是一门解释性语言,但实际它是一门编译语言,只是与传统编译语言有所不同而已,这里不再细说.......
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上
1 0
- Javascript
- JavaScript
- javascript
- javascript
- javascript
- javascript
- javascript
- JavaScript
- javascript
- JavaScript
- Javascript
- javascript
- javascript
- JavaScript
- javascript
- javascript
- JavaScript
- javascript
- 在ubuntu中用vscode编译调试C\C++
- 各个平台支持的Cocos2d-x最大纹理尺寸
- 单调队列1007 Codeforces Round #219 (Div. 1) 372C. Watching Fireworks is Fun
- Android 微博分享及其注意事项
- 关于PowerImageView使用问题总结
- javascript
- Codeforces Round #362 (Div. 1) B Puzzles
- poj 2115扩展欧几里得总结
- 85. Maximal Rectangle
- Android GridView设置宽高,即item宽度高度
- 总有一个在路上
- 日积(Running)月累(ZSSURE):nginx配置、putty连接保持以及AngularJS作用域$scope
- STM32 IAP(在线更新程序)的使用关键点
- 解决未知视频广告导入问题