javascript中new的用法
来源:互联网 发布:如何学好高中政治知乎 编辑:程序博客网 时间:2024/05/21 14:57
new 操作符
var
obj =
new
Base();
这样代码的结果是什么,我们在Javascript引擎中看到的对象模型是:
new操作符具体干了什么呢?其实很简单,就干了三件事情。
var
obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
第一行,我们创建了一个空对象obj
第二行,我们将这个空对象的__proto__成员指向了Base函数对象prototype成员对象
第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数,于是我们就给obj对象赋值了一个id成员变量,这个成员变量的值是”base”,关于call函数的用法,请参看陈皓《Javascript 面向对象编程》文章
如果我们给Base.prototype的对象添加一些函数会有什么效果呢?
例如代码如下:
Base.prototype.toString =
function
() {
return
this
.id;
}
那么当我们使用new创建一个新对象的时候,根据__proto__的特性,toString这个方法也可以做新对象的方法被访问到。于是我们看到了:
构造子中,我们来设置‘类’的成员变量(例如:例子中的id),构造子对象prototype中我们来设置‘类’的公共方法。于是通过函数对象和Javascript特有的__proto__与prototype成员及new操作符,模拟出类和类实例化的效果。
阅读全文
0 0
- javascript中new的用法
- c++中new的用法
- c++中new的用法
- C#中New的用法
- c++中new的用法
- c++中new的用法
- c++中new的用法
- Java中new的用法
- C++中 new的用法
- C++中new的用法
- C++中new的用法
- C++中new的用法
- Javascript中new的疑惑
- javascript 中new的含义
- javascript 中 || 的用法
- linq 中on new和equals new的用法
- C#中new的三种用法
- C++中关于new的用法
- The Little Girl who Picks Mushrooms HDU
- 十分钟掌握pandas(pandas官方文档翻译)
- linux 开发调试辅助工具
- 基于Random类和ArrayList类实现斗地主发牌功能
- spring学习笔记3--AOP
- javascript中new的用法
- 【bzoj3728】 PA2014Final Zarowki
- ztree + openlayer 控制图层
- HDFS基本特性以及工作机制
- Java 代码中如何获取JVM相关的信息?
- 端口号的作用
- Mac 下 PostgreSQL 的安装与使用
- PoEdu_Python_Lesson07_包、PyCharm的一些补充、判当前文件是否是运行文件的方法
- angular-ui-grid merge cells in column(合并列上的单元格)