javascript 中new的含义
来源:互联网 发布:无主之地2优化 编辑:程序博客网 时间:2024/05/18 02:02
javascript中的new
javascript是基于原型(Prototype based)的面向对象的语言,这点不同于我们熟悉的.NET,Java语言,是基于类模式(Class based)。
所以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的过程。
__proto__ 是 javascript对象实例一个内部属性,它指向构造函数即employee的prototype属性,当对象查找某一成员变量时,例如p.say,首先查找自己的成员属性,如果找到了,返回值,如果没找到,就去调用__proto__来检查原型链,当前例子,也就是在employee.prototype中找到say成员。
//var p = new Object() is also correct.var p ={};employee.apply(p);p.__proto__ = employee.prototype;
0 0
- javascript 中new的含义
- C#中new关键字的真正含义
- javascript中this的含义
- javascript中this的含义
- JavaScript 中that的含义
- javascript this指代,new的含义以及prototype,原型链
- Javascript中new的疑惑
- javascript中new的用法
- JavaScript 继承代码中,B.prototype = new A(); 的含义是什么?[转自知乎] 需要多回味
- js new的含义.
- 源码中throw new RuntimeException("Stub!");的含义
- JavaScript 中 void(0) 的含义
- JavaScript 中 void(0) 的含义
- javascript中 === 的含义
- JavaScript 中 void(0) 的含义
- javascript中括号的几种含义
- JavaScript 中 void(0) 的含义
- javascript中括号的几种含义
- 创建osgi项目
- 你可能还没体验过花生壳新技术:NAT内网穿透
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- iOS8 PUSH解决方法
- 穿的那件恶化东华科技活动框架下的好烦
- javascript 中new的含义
- 实用网址搜集
- Android 反编译apk 到java源码的方法
- SQL语句中IN的用法
- Flex中设置Camera的视频清晰质量的最佳配合
- oc 正确定义Objective-C常量
- [原理分析]Linux下的栈溢出案例分析-GDB调试操练[2]
- ROS_LABVIEW
- 服务窗开发