Baseline Widely available
isPrototypeOf()
㯠Object
ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ããªãã¸ã§ã¯ããå¥ã®ãªãã¸ã§ã¯ãã®ãããã¿ã¤ããã§ã¼ã³ã«åå¨ãããã©ãããå¤å®ãã¾ãã
ã¡ã¢: isPrototypeOf()
ã¯ã instanceof
æ¼ç®åã¨ã¯ç°ãªãã¾ãã object instanceof AFunction
ã¨ããå¼ã§ã¯ãobject
ã®ãããã¿ã¤ããã§ã¼ã³ã¯ AFunction
èªèº«ã§ã¯ãªããAFunction.prototype
ã«å¯¾ãã¦å¤å®ããã¾ãã
function Foo() {}
function Bar() {}
Bar.prototype = Object.create(Foo.prototype);
const bar = new Bar();
console.log(Foo.prototype.isPrototypeOf(bar));
// Expected output: true
console.log(Bar.prototype.isPrototypeOf(bar));
// Expected output: true
æ§æ 弿°
object
ãããã¿ã¤ããã§ã¼ã³ã®æ¤ç´¢å¯¾è±¡ã
è«çå¤ã§ãå¼ã³åºããããªãã¸ã§ã¯ã (this
) ã object
ã®ãããã¿ã¤ããã§ã¼ã³ã«ãããã©ããã示ãã¾ãããªãã¸ã§ã¯ã this
ããªãã¸ã§ã¯ãã§ãªãï¼ããªããã£ãã§ããï¼å ´å㯠false
ãè¿ãã¾ãã
TypeError
this
ã null
ã¾ã㯠undefined
ã®å ´åã«çºçãã¾ãï¼ãªãã¸ã§ã¯ãã«å¤æã§ããªãããï¼ã
Object.prototype
ãç¶æ¿ãããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ã¤ã¾ãã null
ãããã¿ã¤ããªãã¸ã§ã¯ããé¤ããã¹ã¦ï¼ã¯ã isPrototypeOf()
ã¡ã½ãããç¶æ¿ãã¾ãããã®ã¡ã½ããã«ãã£ã¦ããªãã¸ã§ã¯ããä»ã®ãªãã¸ã§ã¯ãã®ãããã¿ã¤ããã§ã¼ã³ã®ä¸ã«åå¨ãããã©ããã調ã¹ããã¨ãã§ãã¾ãã弿°ã¨ãã¦æ¸¡ããã object
ããªãã¸ã§ã¯ãã§ãªãï¼ã¤ã¾ãããªããã£ãã§ããï¼å ´åããã®ã¡ã½ããã¯ç´æ¥ false
ãè¿ãã¾ããããã§ãªãå ´åã this
å¤ã¯ãªãã¸ã§ã¯ãã«å¤æããã object
ã®ãããã¿ã¤ããã§ã¼ã³ãããã§ã¼ã³ã®çµç«¯ã«éãããã this
å¤ãè¦ã¤ããã¾ã§æ¢ãã¾ãã
ãã®ä¾ã¯ãbaz
ãªãã¸ã§ã¯ãã®ãããã¿ã¤ããã§ã¼ã³ã«ãBaz.prototype
㨠Bar.prototype
ãFoo.prototype
ãObject.prototype
ãåå¨ãã¦ãããã¢ã§ãã
class Foo {}
class Bar extends Foo {}
class Baz extends Bar {}
const foo = new Foo();
const bar = new Bar();
const baz = new Baz();
// ãããã¿ã¤ããã§ã¼ã³:
// foo: Foo --> Object
// bar: Bar --> Foo --> Object
// baz: Baz --> Bar --> Foo --> Object
console.log(Baz.prototype.isPrototypeOf(baz)); // true
console.log(Baz.prototype.isPrototypeOf(bar)); // false
console.log(Baz.prototype.isPrototypeOf(foo)); // false
console.log(Bar.prototype.isPrototypeOf(baz)); // true
console.log(Bar.prototype.isPrototypeOf(foo)); // false
console.log(Foo.prototype.isPrototypeOf(baz)); // true
console.log(Foo.prototype.isPrototypeOf(bar)); // true
console.log(Object.prototype.isPrototypeOf(baz)); // true
isPrototypeOf()
ã¡ã½ããã¯ãinstanceof
æ¼ç®åã¨åæ§ã«ãç¹å®ã®ãããã¿ã¤ããã§ã¼ã³ããç¶æ¿ããããªãã¸ã§ã¯ããæ±ãã¨ãã«ã®ã¿æ©è½ããã³ã¼ããæã¤å ´åããã¨ãã°ãã®ãªãã¸ã§ã¯ãã«ç¹å®ã®ã¡ã½ãããããããã£ãåå¨ãããã¨ãä¿è¨¼ããå ´åã«ç¹ã«ä¾¿å©ã§ãã
ãã¨ãã°ãbaz
ãªãã¸ã§ã¯ãã Foo.prototype
ã«ç±æ¥ãã¦ãããæ¤è¨¼ãã¦ã¿ã¾ãã
if (Foo.prototype.isPrototypeOf(baz)) {
// do something safe
}
ãããã Foo.prototype
ã baz
ã®ãããã¿ã¤ããã§ã¼ã³ã«åå¨ããããã¨ãã£ã¦ã baz
ã Foo
ãã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã¦ä½¿ç¨ãã¦ä½æãããã¨ã¯éãã¾ãããä¾ãã°ã baz
ã Foo.prototype
ããããã¿ã¤ãã¨ãã¦ç´æ¥å²ãå½ã¦ããã¨ãã§ãã¾ãããã®å ´åãã³ã¼ãã baz
ãã Foo
ã®ãã©ã¤ãã¼ããã£ã¼ã«ããèªã¿è¾¼ãã§ãã失æãã¾ãã
class Foo {
#value = "foo";
static getValue(x) {
return x.#value;
}
}
const baz = { __proto__: Foo.prototype };
if (Foo.prototype.isPrototypeOf(baz)) {
console.log(Foo.getValue(baz)); // TypeError: ã¯ã©ã¹ã宣è¨ãã¦ããªããªãã¸ã§ã¯ããããã©ã¤ãã¼ãã¡ã³ãã¼ #value ãèªã¿åããã¨ã¯ã§ãã¾ããã
}
instanceof
ãåæ§ã§ãããã©ã¤ãã¼ããã£ã¼ã«ããå®å
¨ãªæ¹æ³ã§èªã¿åãå¿
è¦ãããå ´åã¯ã代ããã« in
ã使ç¨ãã¦ãã©ã³ããããã§ãã¯ã¡ã½ãããæä¾ãã¦ãã ããã
class Foo {
#value = "foo";
static getValue(x) {
return x.#value;
}
static isFoo(x) {
return #value in x;
}
}
const baz = { __proto__: Foo.prototype };
if (Foo.isFoo(baz)) {
// baz 㯠Foo ã§ãªãããå®è¡ãããªã
console.log(Foo.getValue(baz));
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4