var Person = function(){this.bar = 'bar'}; Person.prototype.foo = 'foo'; // Person.prototype = { foo : 'foo', ... } var Chef = function(){this.goo = 'goo'}; Chef.prototype = new Person(); // Chef.prototype = { bar : 'bar', ... } var cody = new Chef(); console.log(cody.goo); // logs 'goo': own prop console.log(cody.bar); // logs 'bar': found bar from Chef's prototype console.log(cody.foo); // logs 'foo': found foo from Chef's prototype's prototype
Sunday, May 15, 2016
prototype
__proto__never_changes
var Foo = function Foo(){}; Foo.prototype.x = 1; var FooInstance = new Foo(); console.log(FooInstance.x); // logs 1, as you think it would //now let’s replace/override the prototype object with a new Object() object Foo.prototype = {x:2}; console.log(FooInstance.x); // logs 1: once created, object's __proto__ never changes // create a new instance of Foo() var NewFooInstance = new Foo(); console.log(NewFooInstance.x); // logs 2
constructor__is__prop_of_prototype
function Foo(){}; var aFoo = new Foo(); //constructor__is__prop_of_prototype //aFoo.hasOwnProperty("constructor") is false, aFoo.constructor is actually Foo.prototype.constructor alert( Foo.prototype.constructor === aFoo.constructor ) // alert "true"
Saturday, May 14, 2016
arguments
var add = function() { /* even though we forgo specifying parameters when defining the function, we can rely on the arguments array passed to the function to access parameters */ return arguments[0] + arguments[1]; }; console.log(add(4, 4)); // returns 8
Friday, May 13, 2016
吐槽温哥华房产交易
温哥华买房,有几点对买家不利:
- 竞价机制 一般来说,卖方会出一个比政府估价高很多的价格,在这个价格之上,各买家出价,第一次竞价已经把房价炒到很高了,但是买家还可以加价,这不尼玛扯吗,怪不得房价这么高。
- 障碍解除机制 除了在出价上PK之外,买方的offer(购买意愿书)还包括一个障碍清单,这本来是利好买家,可是如果你出的是带条件的offer,卖方就基本不会接受。原本先天属于买家的这种权利就这样被剥夺了!
- 验房成为一种奢侈 验房是买家的先天权利,在无条件offer中被剥夺。
- 贷款成为巨大风险 买家在买房的时候不可能知道自己能不能贷到款,而障碍解除机制中你不能把贷不到款作为你的障碍,这样你的定金就可能打水漂。
- 评估成为一种猫腻 因为在竞价中把房价炒到很高,所以银行很可能不愿意按照那个价格给你贷款,这时候差价你就得自己去凑,凑不到的话定金还是打水漂。买家同样不能把评估风险作为障碍。
Wednesday, May 11, 2016
primitive_and_prototype_chain
var i = 10 Object.prototype.foo = 'Foo'; alert( i.foo ) //Foo i.bar = 'Bar' // No effect: primitive is not extensive in own props alert( i.bar )// undefined alert( i.constructor ) // function Number(){} alert( typeof i.constructor.prototype ) //object
Sunday, May 8, 2016
reference
var myObject = {};
var copyOfMyObject = myObject;
myObject.foo = 'bar';
console.log(myObject, copyOfMyObject); // logs 'Object { foo="bar"} Object { foo="bar"}'
var copyOfMyObject = myObject;
myObject.foo = 'bar';
console.log(myObject, copyOfMyObject); // logs 'Object { foo="bar"} Object { foo="bar"}'
Subscribe to:
Posts (Atom)