希望有有缘人回答
字符串
自定义标签函数
例 1:(摘自《JavaScript 高级程序设计》第四版 P43)
let a = 6;
let b = 9;
function zipTag(strings, ...expressions) {
return (
strings[0] + expressions.map((e, i) => `${e}${strings[i + 1]}`).join("")
);
}
let taggedResult = zipTag`${a} + ${b} = ${a + b}`;
console.log(taggedResult); // "6 + 9 = 15"
strings 的值是[ '', ' + ', ' = ', '' ]。 strings[0]是空值。
例 2:
let a = 6;
let b = 9;
function zipTag(strings, ...expressions) {
return strings[0];
}
let taggedResult = zipTag`${a} + ${b} = ${a + b}`;
console.log(taggedResult); // 什么都没有
那么例 1 中,添加 strings[0]的意义在哪里?
对象
Object.defineProperties()问题
let book = {};
Object.defineProperties(book, {
year_: {
value: 2017,
},
edition: {
value: 1,
},
year: {
get: function () {
return this.year_;
},
set: function (newValue) {
if (newValue > 2017) {
this.year_ = newValue;
this.edition += newValue - 2017;
}
},
},
});
console.log(book.edition); // 1
console.log(book); // {}
为何添加属性后的 book 为{}?
两种添加属性的方法是否等价?
let person = {
name: "Klaus",
};
console.log(person);
let person = {};
Object.defineProperties(person, {
name: {
value: "Klaus",
},
});
console.log(person);
两种设置函数的定义方式是否等价?
dest = {
set a(val) {
console.log(`Invoked dest setter with param ${val}`);
},
};
console.log(dest);
dest2 = {};
Object.defineProperties(dest2, {
a: {
set(val) {
console.log(`Invoked dest setter with param ${val}`);
},
},
});
console.log(dest2);
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!