js 内建对象的拓展 shim/polyfill ( 内含js 判断对象的属性是否存在的方法)

简介: js 内建对象的拓展 shim/polyfill ( 内含js 判断对象的属性是否存在的方法)

通过内建对象的原型,可以为内建对象拓展一些实用的方法

  • 范例1 —— 检测指定元素是否在数组中 inArray()
Array.prototype.inArray = function(needle) {
  for (var i = 0, len = this.length; i < len; i++) {
    if (this[i] === needle) {
      return true;
    }
  }
  return false;
};

> var colors = ['red', 'green', 'blue'];
> colors.inArray('red');
true

> colors.inArray('yellow');
false
  • 范例2 —— 字符串反转 reverse()
String.prototype.reverse = function() {
  return Array.prototype.reverse.apply(this.split('')).join('');
};

> "bumblebee".reverse();
 "eebelbmub"

js 内建对象拓展的使用场景

让老式浏览器支持已被ECMAScript委员会标准化了的、为现代浏览器所实现的新功能,例如让旧版IE支持ES5中的方法,通常这类扩展叫作shim或者polyfill。

重要提醒:

尽可能的避免使用这项技术,避免引发js内建对象的功能混乱,特别是对于代码的维护者很不友好,容易导致无法预期的错误!

如果想要通过原型为某个对象添加一个新属性,务必先检查一下该属性是否已经存在。

js 判断对象的属性是否存在

1.in运算符 (属性名 in 对象)

  • 情况1——对象自身属性
var obj={a:1};
"a" in obj//true
  • 情况2——对象继承的属性
var objA={a:1};
var objB=Object.create(A)
"a" in objB //true

总结:in运算符不仅能识别对象自身的属性 也能识别继承的属性

2. hasOwnProperty 只能识别对象自身的属性

var obj={a:1};
obj.hasOwnProperty("a")//true

obj.hasOwnProperty("toString")//  false     obj 本身没有toString属性

目录
相关文章
|
2天前
|
JavaScript 前端开发
JavaScript中exec()方法详解
在这个示例中,exec()方法会找到两个匹配项,并打印出它们在字符串中的位置。
7 1
|
1天前
|
存储 Web App开发 JavaScript
浏览器【详解】Cookie(含Cookie的起源,属性,个数和大小限制,作用,优点,缺点,JS 的操作方法等)
浏览器【详解】Cookie(含Cookie的起源,属性,个数和大小限制,作用,优点,缺点,JS 的操作方法等)
4 0
|
2天前
|
JavaScript
JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
|
2天前
|
JavaScript
Js,定义数组的方法,let 数组名 = [数据1,数据2,........,数据n],取值方法,数组名[x],arr[0],let sum sum = sum + arr[0],求和的写法,平均值
Js,定义数组的方法,let 数组名 = [数据1,数据2,........,数据n],取值方法,数组名[x],arr[0],let sum sum = sum + arr[0],求和的写法,平均值
|
2天前
|
JavaScript
js 简易对象转字符串后恢复为简易对象(如 ^a=$1^b=2转对象)
js 简易对象转字符串后恢复为简易对象(如 ^a=$1^b=2转对象)
7 0
|
3天前
|
JavaScript
js 数组移除指定元素【函数封装】(含对象数组移除指定元素)
js 数组移除指定元素【函数封装】(含对象数组移除指定元素)
4 0
|
3天前
|
JavaScript
JS 数组去重(含简单数组去重【5种方法】、对象数组去重【2种方法】)
JS 数组去重(含简单数组去重【5种方法】、对象数组去重【2种方法】)
8 0
|
3天前
|
JavaScript 前端开发 测试技术
js 控制台调试——console 对象【详解】
js 控制台调试——console 对象【详解】
9 0
|
3天前
|
存储 JavaScript 前端开发
|
JavaScript
js基础笔记学习247event对象3
js基础笔记学习247event对象3
52 0
js基础笔记学习247event对象3