面试中 一些简单总结
function A(){ return function b(){} } var a1 = new A(); var a2 = new A;
构造函数 内部 显示 return 一个值;将会替换内部生成对象;
new 构造函数;如果没有参数,可以不加();
a1 和 a2 都是 一个函数却 a1 != a2;
-------------------------------------------------------------------------------------------------------------------------------------------------
function A(){ this.a = 1;
console.log(1); } A.B = function(){ this.b = 2;
console.log(2); } A.prototype.B = function(){ this.b = 3;
console.log(3); } var a1 = new A(); var a2 = new A.B(); //== new (A.B) var a3 = new A.B; var a4 = new A(1).B(); var a5 = new A(1).B;
var a6 = new A().B(); //== (new A).B();
new A.B || new A.B() 这里的构造函数是 对象A的B方法;不是 new A,再B
new A().B() || (new A).B() 这样的 先用构造函数A创建对象 再调对象的B方法
--------------------------------------------------------------------------------------------------------------------
function fn(){ var a = b = 5; } fn(); console.log(a); //Uncaught ReferenceError: a is not defined console.log(b); // 5;
等于
function fn(){ var a; a = b = 5; }
fn();b先赋值5并返回5 再赋值给a;由于a是内部申明,b没有就全局变量