[英]Using arguments.length in Object-prototype
我有一個person類,它有一個User和Admin子類,User會創建用戶實例......現在通過檢查arguments.length來驗證我的addPerson()屬性是行不通的。
即使我可以記錄arguments.length,if語句也不會被執行
var Person = function(name, email) {
this.name = name;
this.email = email;
this.addPerson = function(name, email) {
var paraLength = arguments.length;
console.log(paraLength) //logs 2
if(paraLength < 2 || > 2) {
return "Input must be just name and email"; //does nothing
}else{
//do other things
}
}
const User = function(name, email) {
Person.call(this, name, email);
this.addPerson(name, email); //adding user on execution
};
User.prototype = Object.create(Person.prototype);
//Pointing User constructor to itself so it can override properties
User.prototype.constructor = User;
var user1 = new User("user1", "email@gmail", "this error", "not just ignored")
如果傳入的參數小於或大於2,我想在return語句中終止。 注意:我打算使用對象原型
你有一些語法錯誤 - 在你的if
語句中,你錯過了第二次比較的paraLength
(應該是|| paraLength > 2
)。 您還沒有關閉原來的Person
功能。 由於你沒有對addPerson
的return
值做任何事情,所以沒有任何反應 - 使用return console.log
返回並登錄到控制台:
const Person = function(name, email) { this.name = name; this.email = email; this.addPerson = function(name, email) { let paraLength = arguments.length; console.log(paraLength) //logs 2 if (paraLength < 2 || paraLength > 2) { return console.log("Input must be just name and email"); //does nothing } else { console.log("2 arguments!"); } } } const User = function(name, email) { Person.call(this, name, email); this.addPerson(name, email); //adding user on execution }; User.prototype = Object.create(Person.prototype); User.prototype.constructor = User; //All tests are below this line let user1 = new User("user1", "email@gmail", "this error", "not just ignored"); user1.addPerson("one", "two", "three"); user1.addPerson("one");
不確定User.addPerson()
應該做什么,但回答你的主要問題......
如果你想在addPerson()
函數中捕獲傳遞給new User()
太多(或太少)參數,你可以傳遞arguments
而不僅僅是名稱和電子郵件。 你可以這樣做:
this.addPerson.apply(this, arguments);
使addPerson
看到傳遞給User()
所有參數
var Person = function(name, email) { this.name = name; this.email = email; this.addPerson = function(name, email) { var paraLength = arguments.length; console.log(paraLength) //logs 2 if(paraLength < 2 || paraLength > 2) { console.log( "Input must be just name and email"); //does nothing }else{ //do other things } } } const User = function(name, email) { Person.call(this, name, email); this.addPerson.apply(this, arguments); //adding user on execution }; User.prototype = Object.create(Person.prototype); var user1 = new User("user1", "email@gmail", "this error", "not just ignored")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.