まだまだJavascriptの初心者なのですが、オブジェクトやprototypeチェーンの考え方を学んでいく中に単純ばことがわからなくなってしまいました。。
下記の書く内容について、もしよろしければご教示ください。
(1)下記の(A)のようにFooの関数オブジェクトに新たなメソッドを追加したいと思います。ここではfunction () {document.write("hello");}が帰ってきているのでFooオブジェクトにAメソッドが追加できていると理解して良いのでしょうか?
(2)とあるサイトで既存のオブジェクトにメソッドを追加するときはprototypeに追加すべき内容を拝見しました。(ttp://www.openspc2.org/reibun/javascript/koubun/039/)
prototypeに格納することで親も子も共通して利用出来るというざっくりした認識でいるのですが、実際に(A)と(B)で何が違うのでしょうか?
例えばここでFoo.Aでメソッドを呼び出せないことが不思議です。チェーンを辿って
function() {document.write("hello");}を呼び出してくれると認識しておりました。
(3)下記の(C)のようにインスタンスにメソッドを追加するコードはこのような形でよいのでしょうか?また、また、prototypeを利用すればFooでもアクセスできるのでしょうか?
(4)下記の(D)のように、インスタンスを利用しても4という結果を取得できない理由がわからないのですが、どこに問題があるのでしょうか?
JavaScript
1(A) 2function Foo() {} 3Foo.A = function() {document.write("hello");} 4console.log(Foo.A); 5//function () {document.write("hello");} 6 7(B) 8function Foo() {} 9Foo.prototype.A = function() {document.write("hello");} 10console.log(Foo.prototype.A); 11//function () {document.write("hello");} 12 13(C) 14function Foo() {} 15Foo.A = function() {document.write("hello");} 16var foo = new Foo(); 17foo.B=function() {document.write("good-bye");} 18console.log(foo.B); 19//function () {document.write("good-bye");} 20 21(D) 22 function Foo() {} 23Foo.A = function(n) {return n+n} 24 25var foo = new Foo(2); 26console.log(foo.A); 27//function (n) {return n+n}
基礎的なことかと思うのですが、どうしても理解しようと思っており、質問させていただきました。よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/26 22:50
2017/01/26 22:54