メソッドを関数に追加して、チェーンで呼び出すことができるようにしたい
私がしたいこと:
jQuery を使用したことがある場合は、次のような構文を見たことがあるはずです。
$("#ID");
要素を返す
$("#ID").css("property")
要素のプロパティの css 値を返します
jQuery を使用せずに同じ構文でカスタム メソッドを定義することにより、どのようにそれを行うことができますか?
メソッドを関数に追加して、チェーンで呼び出すことができるようにしたい
私がしたいこと:
jQuery を使用したことがある場合は、次のような構文を見たことがあるはずです。
$("#ID");
要素を返す
$("#ID").css("property")
要素のプロパティの css 値を返します
jQuery を使用せずに同じ構文でカスタム メソッドを定義することにより、どのようにそれを行うことができますか?
ここに簡単なものがあります:
function Get( element_id ) {
this.node = document.querySelector(element_id);
this.css = function(prop, val) {};
}
var get = function( element_id )
{
return new Get( element_id );
};
get('#ID').css("property");
おっしゃっている意味がよくわかりませんが、試してみます。
メソッドの連鎖は、通常this
、プロトタイプのメソッドからオブジェクトを返すことによって実行されます。
function MyClass(...) {
...
}
MyClass.prototype = {
methodOne: function(...) {
...
return this;
},
methodTwo: function(...) {
...
return this;
},
...
};
したがって、次のことができます。
var obj = new MyClass(...);
obj.methodOne(...).methodTwo(...);
これは、実際に値が返されることを期待していない場合や、値を適用できない場合に役立ちます。例えば:
function MyClass(name) {
this.name = name;
}
MyClass.prototype.greet = function(greeting) {
return greeting + " " + this.name;
}
var obj = new MyClass("John");
alert(obj.greet("Hello")); // It alerts "Hello John".
この場合、メソッドからの値が必要です。greet