看到一個這樣子的面試題: 給String對象添加一個方法,傳入一個string類型的參數,然後將string的每一個字元間加空格返回,例如:addSpace("hello world") //->'h e l l o w o r l d'. 第一眼看這道題目覺得出的很有問題, 既然給String中添 ...
看到一個這樣子的面試題:
給String對象添加一個方法,傳入一個string類型的參數,然後將string的每一個字元間加空格返回,例如:addSpace("hello world") //->'h e l l o w o r l d'.
第一眼看這道題目覺得出的很有問題, 既然給String中添加對象,調用方法應該是str.addSpace(),addSpace(str)是一個普通函數的調用方法吧!
請教了下別人,發現自己思維有點誤區,直接就考慮到了給String原型添加對象的方法,而忽略String本身也可以添加屬性.
此處就題目延伸下,總結實現將string的每一個字元間加空格返回的3種方法.
註意: 這3種方法的調用方式是不同的!
1.在String類上直接添加addSpace方法:
1 var str="Hello world!"; 2 String.addSpace=function(str){ 3 return str.split("").join(" "); 4 } 5 6 console.log(String.addSpace(str)); //H e l l o w o r l d !
2.利用String原型添加方法:
1 var str="Hello world!"; 2 String.prototype.addSpace=function(){ 3 return this.split("").join(" "); 4 }; //添加到String原型鏈. 5 6 console.log(str.addSpace()); //H e l l o w o r l d !
3.普通函數的實現方法:
var str="Hello world!"; function addSpace(str){ return str.split("").join(" "); }console.log(addSpace("hello world"));