我昨天接受采访时,面试官问我部分遗产,我对此毫无头绪。根据我的理解,我在下面提到了2个代码块。让我知道我正在做的事情对于部分继承是否正确。
代码块1:我们可以称之为部分继承吗?
var Person = function(){}
Person.prototype.getName = function(){
return this.name;
}
Person.prototype.setName = function(name){
this.name = name;
}
var Author = function(name, books){
this.books = books;
Person.prototype.setName.call(this, name); <<---- Is this a way of doing partial inheritance?
}
Author.prototype.getBooks = function(){
return this.books;
}
var author = new Author('Auth1', ['b1','b2']);
代码块2:如何仅继承&#34; setName&#34;功能来自&#34;人&#34;构造函数?有可能吗?
var Person = function(){
this.setName = function(name){
this.name = name;
};
}
Person.prototype.getName = function(){
return this.name;
}
var Author = function(name, books){
this.books = books;
}
Author.prototype.getBooks = function(){
return this.books;
}
var author = new Author('Auth1', ['b1','b2']);
请解释上述2个代码块的真实性?
我甚至不知道上面引用的例子是否正确。如果它们不正确,请在JavaScript中部分继承。
问题:我只想继承从Person构造函数到Author构造函数的setName方法。这可能吗?
答案 0 :(得分:0)
通过阅读您的描述,我不认为您熟悉上下文和this
的概念,const OtherClass = function () {};
const MyClass = function () {};
MyClass.prototype.logThis = function () { console.log(this); };
const otherInstance = new OtherClass();
const myInstance = new MyClass();
myInstance.logThis(); // logs myInstance
myInstance.logThis.call(otherInstance, 'param1', 'param2'); // logs otherInstance
myInstance.logThis.apply(otherInstance, ['param1', 'param2']); // logs otherInstance
是一个可以代表任何对象的通配符。另外值得注意的是,原型链只是一个特定的位置,可以查看属性在类实例上是否未定义。实例只是在运行构造函数后返回的常规对象(通过&#39; new&#39;关键字),其中函数class.prototype.asdf与instance.asdf的功能相同,如果是instance.asdf没有定义
Person.prototype.setName = Author.prototype.setName = function setName () {}
记住这个&#39;这个&#39;的简单方法是 - 无论在点的左边是什么&#39;在执行或调用时间,而不是它写入的函数范围。这就是为什么setTimeout和Promises等其他异步内容不会使用&#39; this&#39;你可能会期待,除非你已经束缚它。
您可以编写一个使用未知操作的通用共享函数,并将其包含在不同的对象中。
WebElement getmenu= driver.findElement(By.xpath("//*[@id='ui-id-2']/span[2]")); //xpath the parent
Actions act = new Actions(driver);
act.moveToElement(getmenu).perform();
Thread.sleep(3000);
WebElement clickElement= driver.findElement(By.linkText("Sofa L"));//xpath the child
act.moveToElement(clickElement).click().perform();