-
并不是 所有对象的 原型链 上都会有 Object.prototype var obj2 = Object.create(null); obj2.__proto__ //undefined obj2.toString //undefined查看全部
-
在父类的prototype 属性上绑定一些需要共享的方法和属性 Person.prototype.hi = function(){ console.log("Hi,my name is "+this.name+", I'm "+this.age+" years old now."); }; 先在构造器内 .call() 父类 function Studeng(name,age,className){ Person.call(this,name,age); this.className = className; } 然后使用 Object.create(pro) 方法创建一个新对象,这个对象的原型是 .create(pro) 的参数 pro Student.prototype = Objcet.create(Person.prototype); Student.prototype.constructor = Student; 可以在子类上覆盖父类的方法 Student.prototype.hi = function(){ console.log("Hi, my name is "+this.name+", I'm "+this.age+" years old now, and from "+this.className+"."); }; Javascript在原型链上的查找,当找到后不会在向上一级寻找,直接返回 var bosn = new Student("Bosn",27,"Class 3,Grade 2"); bosn.hi(): //调用的是Student.prototype.hi查看全部
-
Foo.prototype { constructor:Foo, __proto__:Object.prototype, x:1 } prototype 的作用是在使用 new 创建实例时,将这个对象属性作为实例的原型 ------------ prototype 是函数上预设的一个对象属性,而原型是对象的原型查看全部
-
Foo.prototype 是Foo 函数的一个对象,它是一个属性,而不是我们经常说的原型。 函数会有一个叫 portotype 的属性,这个属性是一个对象 var obj3 = new Foo(); // this 会指向一个空对象,而这个空对象的原型会指向构造器(Foo)的portotype 属性查看全部
-
在初始化阶段, AO(global) = { x: <ref to function>, a: undefined, b: undefined } 故而一开始 alert(x); 返回function 执行阶段,x 先后被赋值为 10 ,20 第二次alert(x); 因为 函数声明已经前置了,故 x == 20 if(true),a 被赋值为1 Javascript没有块作用域,尽管 b没有被赋值,但是其还是被声明了,值为undefined.查看全部
-
AO 初始化后,执行阶段 AO(test) = { a:10, b:20, c:10, d:<reference to FunctionDeclaration "d">, e:function _e{} } 因为 (function x(){});是是函数表达式,x 不会影响 AO,所以被忽略了。当这个匿名函数是立即调用的,它会有自己的一个执行上下文,但因为被()括起来,并没有直接调用,实际上就被忽略掉了。查看全部
-
01. AO 为执行上下文,所以在调用 test(10); 语句后开始初始化填充 02.填充顺序为: 函数参数(未传入,初始化为undefined) -> 函数声明(命名冲突,覆盖其他) -> 变量声明(初始化值为undefined,命名冲突,被忽略) 03. AO的填充是在初始化阶段,而不是执行阶段 var c = 10; // 其中 = 为赋值语句,在初始化并不执行,故AO 中 c:undefined 04. 函数声明导致函数前置了 05. 函数表达式不会影响AO ,即 _e 不会存在在AO 中 06. 即使初始化阶段,func 是函数声明,但在执行阶段, func = 1,最后输出 1 function foo(x,y,z){function func(){};var func = 1;console.log(func);}; foo(100);查看全部
-
VO(functionContext) === AO; AO,函数中的概念,表示激活对象 可以理解为不同执行阶段下的不同的东西 -------------- AO 在函数调用时,会有一个特殊的 arguments 在初始化的阶段时,arguments 会被放置到 AO 对象 在arguemnts 初始化完成后,这个AO 对象又会被称为VO对象查看全部
-
在全局作用域下,有个VO(globalContext),在第一行代码执行之前,JS引擎会将对应的全局设定初始化到这个VO里。 window 指向这个VO本身,因为VO只是个概念,它实际上不可见的。 可以通过window 间接地拿到这个对象查看全部
-
变量对象(Variable Object,缩写VO)是一个抽象概念中的“对象”,它用于存储执行上下文中的: 1.变量 2.函数声明 3.函数参数 ------------- 全局执行上下文: VO(gobalContext){ a:10, test: <ref to function> }; test函数执行上下文: VO(test functionContext){ x:30, b:20 }查看全部
-
执行上下文是一个栈的结构查看全部
-
类型检查:1.typeof (number boolean function undefined object) 2.instanceof (主要判断对象是否是一个类的实例) 3.Object.prototype.toString() 4.constuctor 5.duck type查看全部
-
01.每次函数调用时,都会有一个对应的执行环境,也称执行上下文 02.对整个全局作用域,在进入第一行代码前,也会有个全局执行上下文 03.同样一个函数,在被调用多次时,每次都有不同的执行上下文查看全部
-
读写对象属性: 属性异常、删除属性、检测属性、枚举属性 一、属性读写 其中一般用.操作符,如果属性是动态的则用[]。 另外for in也行,但是容易出问题,它可能会将原型链上的属性遍历出来,而且这个顺序是不一定的查看全部
-
!function(){ //do sth }(); +function(){ //do sth }(); ----------- 使用 ! 或 + 把函数变成函数表达式,而不是函数声明 省略 ! 或 + ,以function()开头,会被认为是函数声明,前置处理,留下(); 会报错查看全部
举报
0/150
提交
取消