javascript中的new使用
作者:bea
所以javascript中没有类的概念。理解这一点很重要,很多javascript教程为了让读者更容易理解,会套用他们常用的类模式中的概念,这 样反而让大家产生歧义。 先进段代码, 代码如下: function employee(){ this.name=""; this.dept=""; } employee.prototype={ say:'hello' } var p = new employee(); 这段代码,我们会经常用到,其中new关
所以javascript中没有类的概念。理解这一点很重要,很多javascript教程为了让读者更容易理解,会套用他们常用的类模式中的概念,这 样反而让大家产生歧义。
先进段代码,
代码如下:
function employee(){
this.name="";
this.dept="";
}
employee.prototype={
say:'hello'
}
var p = new employee();
这段代码,我们会经常用到,其中new关键字最容易引起混淆的一处。这里的new和.NET中的所做的工作不同。
我们可以这样理解javascript中用new操作创建实例的过程,new关键字以employee()为模板创建了一个新的对象,它复制了employee构造器中的成员变量(也可以理解为,将p对象作为参数传入构造函数中,并且应用函数中所有this的成员变量),同时继承了构造器的原型。
我们用代码模拟new的过程。
代码如下:
//var p = new Object() is also correct.
var p ={};
employee.apply(p);
p.__proto__ = employee.prototype;
__proto__ 是 javascript对象实例一个内部属性,它指向构造函数即employee的prototype属性,当对象查找某一成员变量时,例如p.say,首先查找自己的成员属性,如果找到了,返回值,如果没找到,就去调用__proto__来检查原型链,当前例子,也就是在employee.prototype中找到say成员。
有用 | 无用
先进段代码,
代码如下:
function employee(){
this.name="";
this.dept="";
}
employee.prototype={
say:'hello'
}
var p = new employee();
这段代码,我们会经常用到,其中new关键字最容易引起混淆的一处。这里的new和.NET中的所做的工作不同。
我们可以这样理解javascript中用new操作创建实例的过程,new关键字以employee()为模板创建了一个新的对象,它复制了employee构造器中的成员变量(也可以理解为,将p对象作为参数传入构造函数中,并且应用函数中所有this的成员变量),同时继承了构造器的原型。
我们用代码模拟new的过程。
代码如下:
//var p = new Object() is also correct.
var p ={};
employee.apply(p);
p.__proto__ = employee.prototype;
__proto__ 是 javascript对象实例一个内部属性,它指向构造函数即employee的prototype属性,当对象查找某一成员变量时,例如p.say,首先查找自己的成员属性,如果找到了,返回值,如果没找到,就去调用__proto__来检查原型链,当前例子,也就是在employee.prototype中找到say成员。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- 锋利的jQuery 第三章章节总结的例子
- jQuery 核心函数以及jQuery对象
- jquery easyui的tabs使用时的问题
- Jquery Ajax学习实例7 Ajax所有过程事件分析示例
- jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
- 锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
- javascript 多浏览器 事件大全
- jQuery $.each的用法说明
- javascript 用原型继承来实现对象系统
- 用js实现的自定义的对话框的实现代码
- 简洁短小的 JavaScript IE 浏览器判定代码
- jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
- 锋利的jQuery jQuery中的DOM操作
- 锋利的jQuery 要点归纳(一) jQuery选择器
- jquery 可拖拽的窗体控件实现代码
- jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
- javascript qq右下角滑出窗口 sheyMsg
- js 居中漂浮广告
- jquery checkbox,radio是否选中的判断代码