[英]Is creating objects in html and having functions considered bad practice in oop?
[英]if JS wrapper objects are considered bad style, is type-checking with lodash _.isString etc. considered bad style as well?
正如其他問題和答案已經指出的那樣,Google和Douglas Crockford都認為JS包裝器對象的樣式不好,因此不應使用。
如果是這樣,是否應該使用lodash _.isString
,它適用於原始和對象包裝的字符串,只是為了檢查某個東西是否是字符串,是否也被認為是不好的樣式?
在我看來,諸如此類的lodash函數主要設計用於函數式編程,例如_.filter(myArray, _.isString)
,但是如果遵循僅使用原始字符串的最佳實踐,則將進行簡單的typeof
檢查足以實現。
但是_.isString的lodash代碼的作用遠不止_.isString
:
/**
* Checks if `value` is classified as a `String` primitive or object.
*
* @static
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
* _.isString('abc');
* // => true
*
* _.isString(1);
* // => false
*/
function isString(value) {
return typeof value == 'string' ||
(!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
}
這樣做的動機是什么? 使用對象包裝的用戶抱怨lodash方法對他們不起作用?
我認為使用任何下划線/破折號類型檢查方法都不是壞習慣或不好的風格。 實際上,它們讀起來非常好,通常不易出現程序員錯誤。
使它適用於字符串對象和文字的動機是,它只是必須的。 Lodash是一個庫,在這種庫中應該支持javascript中存在的古怪之處。
至於為什么可以使用字符串對象代替。 我能想到的一個原因是,您可以將屬性附加到字符串ex:
var a = new String('foo bar');
a.b = 'baz';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.