javascript
再说javascript 的__proto__ 和prototype 属性
過了一段時間,沒寫 原生的 javascript 的了,感覺天天在用框架寫代碼,框架寫代碼完全限定死了你所需要思考的東西,只是在處理一些業務邏輯,真正的代碼
都感覺不會寫了。 突然發現,框架用的不熟悉,原生的代碼也忘得差不多了。感覺很難受,人生不能這樣子度過!
重新翻開《javascript 高級程序設計》, 回歸到本原。工作上用框架寫代碼沒錯,業余時間的話就要自己多寫一點原生的代碼,或者說研究、模仿、直到自己設計一個
框架出來。
js 中的類, 對象, 類的靜態變量,類的繼承 。
function Scope(){
}?
這樣就是定義了一個類了。
-------------------------------------------------------------------
This figure again shows that every object has a prototype. Constructor function Foo also has its own?__proto__?which is Function.prototype, and which in turn also references via its?__proto__property again to the Object.prototype. Thus, repeat, Foo.prototype is just an explicit property of Foo which refers to the prototype of b and c objects.
var b = new Foo(20); var c = new Foo(30);What are the differences between?__proto__?and?prototype?properties?
?
| up vote23down vote | Prototype VS. __proto__ VS. [[Prototype]]When creating a function, a property object called?prototype?is being created automatically (you didn't create it yourself) and is being attached to the function object (the?constructor). Example: function Foo () { this.name = 'John Doe'; } // Foo has an object property called prototype. // prototype was created automatically when we declared the function Foo. Foo.hasOwnProperty('prototype'); // true // Now, we can assign properties to to the prototype object without declaring it first. Foo.prototype.myName = function () { return 'My name is ' + this.name; }If you will create a new object out of?Foo?using the?new?keyword, you basically creating (among other things) a new object that has an?internal or private link?to the function's prototype?Foo?we discussed earlier: var b = new Foo(); b.[[Prototype]] === Foo.prototype // true? The?private?linkage to that function's object called?[[Prototype]]. Many browsers are providing us with a?public?linkage instead that called?__proto__! ? To be more specific,?__proto__?is actually a?getter function?that belong to the native JavaScript Object and returns the internal-private prototype linkage of whatever the?this?binding is (returns the?[[Prototype]]?of?b): b.__proto__ === Foo.prototype // trueIt is worth noting that starting of?ECMAScript5, you can also use the?getPrototypeOf?method to get the internal private linkage: Object.getPrototypeOf(b) === b.__proto__ // true? NOTE:?this answer doesn't intend to cover the whole process of creating new objects or new constructors, but to help better understand what is?__proto__,?prototype?and?[[Prototype]]?and how it works. |
轉載于:https://www.cnblogs.com/oxspirt/p/6517856.html
總結
以上是生活随笔為你收集整理的再说javascript 的__proto__ 和prototype 属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 切糕(bzoj 3144)
- 下一篇: delphi如何让程序最小化到任务栏(使