js中属性的特性(getter/setter)

除了包含名字和值意外属性还包括一些标识它们 可写/可枚举/可配置的特性:

1 可以通过这些API给圆形对象添加方法,并将它们设置成不可枚举的,这个让它们看起来像内置的方法.

2 可以通过这些API 给对象定义不能修改或删除的属性, 借此."锁定"这个对象.

  我们可以将存取器属性的getter和setter防范看成属性的特性.

  也可把数据属性的值看成属性的特性.

  可以认为一个属性包含一个名字 和4 个特性 --->[ {值: value},{可写性: writable},{可枚举: enumerable},{可配置性: configurable},]

  存取器没有值 和 可写性.

Object.getOwnPropertyDescriptor({x:1}, "x"):
返回: 

 

var  o = {};
        Object.defineProperty(o, "x", {
            value: 222,
            writable: true,
            enumerable: false,  // bu可枚举
            configurable: true
        });
        console.log(o.x);   //  222
        console.log(Object.keys(o));   // []
如果把 writable: false,
则 普通修改  o.x = 1;   console 以后  结果还是 222 
但是属性依然是可配置的 
可以通过  
   Object.defineProperty(o, "x", {
            value: 1,
            writable: false,
            enumerable: false,  // bu可枚举
            configurable: true
        });
则结果 为 1
 
ES5中新增的一些数组的操作方法(ES3中简单的pop() push() 就暂时不做解释了)
1 forEach()  从头至尾遍历数组,尾每个元素调用指定的函数,  参数  function(① 数组元素, ② 元素的索引, ③ 数组本身){}, 
 
2 map() 将调用的数组每个元素传递给指定的函数 big返回一个数组,它 包含该函数的返回值  array.map(function(item, index, array) { return })
 
3 filter() 返回的数组元素是调用的数组的一个子集,传递的函数是用来逻辑判定的 改函数返回 true或者false 调用判断函数就行前面两个方法一样, 如果返回true或能转化为true的值,那    么传递给判定函数的元素就是这个子集的成员,它将被添加到一个作为返回值的数组中;
 
4 every() 和some() 是数组的逻辑判定,他们对数组元素应用指定的函数进行判定, 返回true或者 false
  var ary = [5, 4, 3, 2, 1];
  ary.every(function (x) { return x < 10})   //  =>true  所有的值都 < 10  成立  有一个错 就返回false     some 就是有一个成立 就返回true
 
5 reduce() 和reduceRight() 使用指定的函数将数组元素进行组合,生成单个值, 这在函数式编程中是常见的操作, 也可以称为 "注入" 和 " 折叠"
 
var ary = [5, 4, 3, 2, 1];
  var sum = ary.reduce(function(x, y) { return x +y}, 0)  // 数组求和
 
  var product = ary.reduce(function(x, y) { return x *y}, 1)  // 数组求积
  
  var max = ary.reduce(function (x, y) {return (x> y)? x:y;})  // 求最大值
reduce() 需要两个参数,第一个是执行化简操作的函数, 化简函数的任务就是用某种方法把两个值组合或者化简为一个值, 并返回化简后的值.[未完待续...]
 
 
 
posted @ 2019-03-26 14:35  Steven_Rain  阅读(1541)  评论(0编辑  收藏  举报