关于JavaScript那些事

it2026-01-16  10

Javascript 通常情况下都被误解了,有人说是有各种bug,有人说支持面向对象很垃圾,还有人说是c和self ONS的产物->可笑 JavaScript是一门很优秀的语言,脱胎于lisp,又轻量级的支持了数据封装,走duck type路线,hash literal表示对象,这也就自然支持了反射机制; JavaScript支持的原型链很大程度上倾向于组合而不是继承,从而实现了模块间的解耦。

JavaScript常用的面向对象封装模式:

var Obj = function (name) { this.name = name; this.flag = new Array('A', 'B'); } Obj.prototype = { showName : function () { alert(this.name); } } var obj1 = new Obj(); var obj2 = new Obj(); obj1.flag.push('C'); alert(obj1.flag); // A,B,C alert(obj2.flag); //A,B alert(obj1.showName()); ----------------------------cut-off-rule-------------------------------- var Obj = function () { function initialize (name) { this.name = name; this.flag = new Array('A', 'B'); } initialize.prototype = { showName : function () { alert(this.name); }, showFlag : function () { alert(this.flag); } } return initialize; }(); var obj1 = new Obj('aaa'); var obj2 = new Obj('bbb'); obj1.showName(); // aaa obj2.showName(); // bbb obj1.showFlag(); // AB

JavaScript闭包:获取函数上下文信息,也常用来数据封装

var db = (function() { // 创建一个隐藏的object, 这个object持有一些数据 // 从外部是不能访问这个object的 var data = {}; // 创建一个函数, 这个函数提供一些访问data的数据的方法 return function(key, val) { if (val === undefined) { return data[key] } // get else { return data[key] = val } // set } // 我们可以调用这个匿名方法,返回这个内部函数,它是一个闭包 })(); // 利用函数作用域创建私有空间 db('x'); // 返回 undefined db('x', 1); // 设置data['x']为1 db('x'); // 返回 1 // 我们不可能访问data这个object本身,但是我们可以设置它的成员

转载于:https://www.cnblogs.com/octave/p/4117763.html

相关资源:JavaScript权威指南
最新回复(0)