javascript中的new使用_javascript技巧
程序员文章站
2023-12-25 19:36:15
...
所以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成员。
推荐阅读
-
web基于浏览器的本地存储方法应用_javascript技巧
-
JS获取字符串型数组下标的数组长度的代码_javascript技巧
-
JS的replace方法与正则表达式结合应用讲解_javascript技巧
-
javascript中利用数组实现的循环队列代码_javascript技巧
-
JavaScript使用indexOf()实现数组去重的方法分析
-
ExtJS实现文件下载的方法实例_javascript技巧
-
分组在re模块中的使用以及使用正则表达式的技巧
-
JS实现点击按钮后框架内载入不同网页的方法_javascript技巧
-
JavaScript中的事件与异常捕获详析
-
JavaScript中filter的用法实例分析