解决原型链上有几个不必要存在的父亲的属性的问题

backbone里面的

http://test.xdnote.com/chapter-javascript/strange2.html


	function A(){
		this.init(arguments);
		return 0;
	}
	A.prototype={
		init:function(args){
			console.log(args);
		}
	}
	//	1.这里面会报一个语法错误,主要是因为它没有实例化
	//	2.更加直白的说下:像这种写法 return 没有任何作用,因为构造器中有this指针就说明,只有new操作才能,而new操作总是返回的对象本身,而不是构造器中return的值
	A();

	//	2.没有参数时,括号都可以不写,效果与写了是一样的,当然个人建议任何时候都写括号
	new A;
	new A();
	
	//	3.带参数时,就必须写括号了
	new A(1);
	new A(1,'2');
	
	//	4.仿造一下,由于 函数已经定义了,所以不太好证明第一段代码的想法
	//	(A);
	//	!A;
	//	var dd = new A('dd');
	//	dd.init(1,'2');
	//	dd();	//error
	//	dd;
	//	A=!A;
	//	console.log(A);
	//	console.log(new A('DFA'));
	//	A();
	//	A++;
	//	console.log(A);
	//	console.log(new A('DFA'));
	//	(A);
	
	//	5.再来一无段
	function B(){
		console.log(arguments);
		return 1;
	}
	B();
	new B;
	new B(1);
	new B(1,'2');
	B;
	
	//	6.结论:无参可省略括号,但此表达式只能构造一个对象,如果要操作还是加把括号加上
	console.log(new Date);
	console.log(new Date());
	console.log((new Date).getTime());
	console.log(new Date().getTime());
	
原文地址:https://www.cnblogs.com/oklfx/p/8158881.html