思索一下,以下输出的是什么:
- function Foo(){
- console.log(this); // 打印 {}?
- }
由于这是一个全局工具,记着,无论父浸染域是什么,它都将由子浸染域担任。打印出来是 window 工具。上面接头的三个要领现实上用于配置这个工具。
此刻,this 的最后一个范例,在工具中的 this, 如下:
- var person = {
- name: "Stranger",
- age: 24,
- get identity() {
- return {who: this.name, howOld: this.age};
- }
- }
上述行使了 getter 语法,这是一个可以作为变量挪用的函数。
- person.identity; // returns {who: "Stranger", howOld: 24}
此时,this 现实上是指工具自己。正如我们前面提到的,它在差异的处全部差异的示意。
5) 领略工具 (Object.freeze, Object.seal)
凡是工具的名目如下:
- var marks = {physics: 98, maths:95, chemistry: 91};
它是一个存储键、值对的映射。 javascript 工具有一个非凡的属性,可以将任何对象存储为一个值。这意味着我们可以将一个列表、另一个工具、一个函数等存储为一个值。
可以用如下方法来建设工具:
- var marks = {};
- var marks = new Object();
可以行使 JSON.stringify() 将一个工具转制成字符串,也可以用 JSON.parse 在将其转成工具。
- // returns "{"physics":98,"maths":95,"chemistry":91}"
- JSON.stringify(marks);
- // Get object from string
- JSON.parse('{"physics":98,"maths":95,"chemistry":91}');
行使 Object.keys 迭代工具:
- var highScere = 0;
- for (i of Object.keys(marks)) {
- if (marks[i] > highScore)
- highScore = marks[i];
- }
Object.values 以数组的方法返回工具的值。
工具上的其他重要函数有:
- Object.prototype(object)
- Object.freeze(function)
- Object.seal(function)
Object.prototype 上提供了很多应用上相干的函数,如下:
Object.prototype.hasOwnProperty 用于搜查给定的属性/键是否存在于工具中。
- marks.hasOwnProperty("physics"); // returns true
- marks.hasOwnProperty("greek"); // returns false
Object.prototype.instanceof 判定给定工具是否是特定原型的范例。
- function Car(make, model, year) {
- this.make = make;
- this.model = model;
- this.year = year;
- }
- var newCar = new Car('Honda', 'City', 2007);
- console.log(newCar instanceof Car); // returns true
行使 Object.freeze 可以冻结工具,以便不能修改工具现有属性。
- var marks = {physics: 98, maths:95, chemistry: 91};
- finalizedMarks = Object.freeze(marks);
- finalizedMarks["physics"] = 86; // throws error in strict mode
- console.log(marks); // {physics: 98, maths: 95, chemistry: 91}
在这里,试图修改冻结后的 physics 的值,但 JavaScript不应承这样做。我们可以行使 Object.isFrozen 来判定,给定工具是否被冻结:
- Object.isFrozen(finalizedMarks); // returns true
Object.seal 与 Object.freeze 略有差异。 Object.seal() 要领关闭一个工具,阻止添加新属性并将全部现有属性标志为不行设置。当前属性的值只要可写就可以改变。
- var marks = {physics: 98, maths:95, chemistry: 91};
- Object.seal(marks);
- delete marks.chemistry; // returns false as operation failed
- marks.physics = 95; // Works!
- marks.greek = 86; // Will not add a new property
同样, 可以行使 Object.isSealed 判定工具是否被密封。
- Object.isSealed(marks); // returns true
在全局工具函数上尚有很多其他重要的函数/要领,在这里找到他们。
6) 领略原型担任 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|