簡體   English   中英

在Object-prototype中使用arguments.length

[英]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功能。 由於你沒有對addPersonreturn值做任何事情,所以沒有任何反應 - 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM