使用 this 指针和 prototype 实现 js 的 OO 时的一个区别
2005-03-02 09:54
681 查看
利用 this 实现的公共方法中可以访问类的私有成员(用 var 声明的变量),私有方法(用 function 直接定义的方法);
利用原型扩展实现的方法中,无法调用私有成员和变量。
例子如下所示(把其中注释掉的两行恢复就可以看到区别):
function T(name) {
this.Name = name;
var x = 5;
function privateFunc() {
alert('in private method: do sometheing');
}
this.PublicFunc = function() {
// 可以调用私有方法,访问私有成员变量。
privateFunc();
alert('x = ' + x);
alert('in public method: do something else.');
}
}
//var t = new T('t1');
//t.PublicFunc();
T.prototype.PublicFunc2 = function() {
alert('in public method 2.');
// 下面两行都会出错。在利用 prototype 扩展的方法里无法调用对象的私有方法,也访问不到通过 var 定义的私有成员。
// alert(x);
// privateFunc();
}
var t2 = new T('t2');
t2.PublicFunc();
t2.PublicFunc2();
利用原型扩展实现的方法中,无法调用私有成员和变量。
例子如下所示(把其中注释掉的两行恢复就可以看到区别):
function T(name) {
this.Name = name;
var x = 5;
function privateFunc() {
alert('in private method: do sometheing');
}
this.PublicFunc = function() {
// 可以调用私有方法,访问私有成员变量。
privateFunc();
alert('x = ' + x);
alert('in public method: do something else.');
}
}
//var t = new T('t1');
//t.PublicFunc();
T.prototype.PublicFunc2 = function() {
alert('in public method 2.');
// 下面两行都会出错。在利用 prototype 扩展的方法里无法调用对象的私有方法,也访问不到通过 var 定义的私有成员。
// alert(x);
// privateFunc();
}
var t2 = new T('t2');
t2.PublicFunc();
t2.PublicFunc2();
相关文章推荐
- 使用 this 指针和 prototype 实现 js 的 OO 时的一个区别
- 第四十六篇:MAC下使用 Node.js 实现一个 WebServer 服务器
- JS:目录跟随定位效果的实现及锚点中使用name和id定位的区别。
- 使用 JS 实现一个本地数据库
- 使用js实现一个可编辑的select下拉列表
- 2016/3/31 ①全选时 下面选项全选中 ② 下面不选中时 全选取消 ③在“” 中 转义字符的使用\ onclick=\"Checkpa(this,'flall')\"; ④区别于分别实现 重点在于两种情况合并实现
- 使用Node.js实现一个简单的ZooKeeper客户端
- 使用一个指针实现双向链表
- this指针的使用js
- 使用JS实现一个匀速回到顶部的效果
- 使用comet架构实现了一个基于网页的视频监控prototype!!!!哇哈哈庆祝一下
- 使用js实现一个简单的模态框
- 使用JavaScript实现一个“字节码解释器”,并用它重新实现JS科学计算器的后端(后续1)
- 学习笔记---使用prototype.js扩展struts标签实现xmlhttprequest
- 使用Node.js + MongoDB实现一个简单的日志分析系统
- 有关打印、收藏等的JS代码(打印等主要使用了一个IE组件来实现)
- 使用JS实现将GridView中的TextBox列的值博给GridView外的一个文本筐
- 使用Node.js + MongoDB实现一个简单的日志分析系统
- 使用LINUX C实现一个链表,要求:链表节点构成:姓名、分数、下一个节点指针...
- 使用JavaScript实现一个“字节码解释器”,并用它重新实现JS科学计算器的后端(待续)