function a(name) {
// var this = window // 不new,正常执行
// this = Object.creat(a.prototype); // new执行,改变this指向
// this = { // new执行的后果
// __proto__ : { // = a.prototype
// constructor : a,
// __proto__ : {...} // = Object.prototype
// }
// }
this.name = name;
// return this;
}
// 函数被定义就会有的,console.log(window)查看
// f a = {
// arguments : null,
// caller : null,
// length : 1,
// name : 'a',
// prototype : {
// constructor : a,
// __proto__ : {...} // = Object.prototype
// },
// __proto__ : {...}, // = Object.prototype
// [[FunctionLocation]] : xx.html:29,
// [[scope]] : {0: window}
// }
// a.prototype = { // 函数被定义时产生的
// constructor : a,
// __proto__ : {...} // = Object.prototype
// }
a.prototype.last = 'zh'; // 相当于添加属性
// a.prototype = { // 结果
// last : 'zh',
// constructor : a,
// __proto__ : {...} // = Object.prototype
// }
// a.prototype = { //相当于重新赋给属性
// last : 'zh'
// }
// a.prototype = { // 结果(缺了constructor)
// last : 'zh',
// __proto__ : {...} // = Object.prototype
// }
var b = new a('chl');
// b = a {
// name : 'chl',
// __proto__ : { // = a.prototype
// last : 'zh',
// constructor : a,
// __proto__ : {...} // = Object.prototype
// }
// }
var c = new Object(); // 或 c = {}
// c = {
// __proto__ : {...} // = Object.prototype
// }
// var c = {
// num : 5
// }
// var c = {
// num : 5
// __proto__ : {...} // = Object.prototype
// }