示例详解JavaScript解析器的执行过程
2015-11-09 12:01
627 查看
首先:综述一下js解析器的执行过程
同作域解析顺序 1先定义->2再执行执行调用顺序 1实例->2原型->3父原型
示例1
//示例1: function Person(name){ //1.定义一个类或就是称为函数 this.sex = '男'; this.name="我是基类的name"; this['aa']=function(){ //2.在实例上定义一个方法 console.log('这是在类实例上定义的方法:'+this.name+" "+this.sex); } } Person.prototype.aa=function(){ //3.在原型上定义一个方法 console.log('这是在原型上定义的方法:'+this.name+" "+this.sex) } //4.调用类 var person1=new Person('Byron'); person1.aa();
输出
这是在类实例上定义的方法:我是基类的name 男
javascript解析器,工作详解
1.先执行定义关健字 function 以及 原型定义prototype 2.执行关健字 var 、new 3.执行persion1.aa(); 3.1 实例上是否有aa的定义-> 有则执行aa || 无则到原型prototype上找aa并执行
示例2:
function Person(name){ //1.定义一个类或就是称为函数 this.sex = '男'; this.name="我是基类的name"; this['aa']=function(){ //2.在实例上定义一个方法 console.log('这是在类实例上定义的方法:'+this.name+" "+th } } Person.prototype.aa=function(){ //3.在原型上定义一个方法 console.log('这是在原型上定义的方法:'+this.name+" "+this.sex } //4.调用类 var person1=new Person('Byron'); person1.aa(); function Person(name){ //5.覆盖上面函数Person的定义 this.name='我是子类的name'; }
输出
这是在原型上定义的方法:我是子类的name undefined
#
javascript解析器,工作详解#
1.先执行定义关健字 function 以及 原型定义prototype 2.执行关健字 var 、new 3.执行persion1.aa(); 3.1 实例上是否有aa的定义 -> 有则执行aa || 无则到原型prototype上找aa并执行(此时由于最初的Person定义已被覆盖, 所以属姓sex已不存在了)
相关文章推荐
- JavaScript__的this与函数
- JS实现网页上随机产生超链接地址的方法
- 服务器返回一个无效的JSON string,处理
- JavaScript获取页面中超链接数量的方法
- JS设置、获取DOM自定义属性
- JSP基本语法--实例演练
- 获取来自jsp errorpage 的exception 对象
- JS中的三种消息框
- 交叉编译 json
- 类似与三元表达式的 json 读取值
- JavaScript基础——ECMAScript的基础概念
- Javascript类型转换的规则
- 将数据封装为Json数据格式
- Javascript中的全局对象
- Javascript字符串
- JavaScript实现简单获取当前网页网址的方法
- JSP基础语法--跳转指令 jsp:forward page
- javascript高级开发学习笔记四
- javascript高级开发学习笔记五
- javascript高级开发学习笔记六