如果你希望在第二种和第三种情况下也屏蔽 foo , 那就不能使用 = 操作符来赋值 , 而是使用
var anotherObj = {
a: 2
b: 2
var myObj = Object.create( anotherObj )
myObj.c =12
console.log( myObj) // { c: 12 ___proto___: { a: 2 b: 2
myObj.a = 100
console.log(myObj) // { c: 12 a: 100 ___proto___: { a: 100 b: 2
var anotherObj = {
a: 2
b: 2
Object.defineProperty(anotherObj 'foo' {
value: 1000
writable: false
)
var myObj = Object.create( anotherObj )
myObj.foo = 100
console.log(myObj) // { ___proto___: { a: 2 b: 2 foo: 1000
Object.defineProperty(myObj 'foo' {
value: 1001
writable: true
)
console.log(myObj) // { foo: 1001 ___proto___: { a: 2 b: 2 foo: 1001
「类」现在你可能很好奇:为什么一个对象需要关联到另一个对象呢?这样做有什么好处?这个问题非常好 , 但是在回答之前我们首先要理解 [[Prototype
我在这里针对第一种情况 , 和第二种情况做了个案例 , 情况确实如书中所讲的那样 。
如果 defineProperty 定义了原型中的属性 , 并且可写与修改设置 为 false , 那么直接用 = 赋值不起作用 , 使用 defineProperty 才会起作用 。 但是事实上有谁会在代码里使用 defineProperty 来定义属性呢?究竟是在什么情况下 , 我才会去想想配置 writable configuable enmunable 这些参数呢?
很少会用上 。
不是什么?
以前我们说过 , JavaScript 和面向类的语法不同 , 它并没有作为对象的抽象模式或者说蓝图 。 JavaScript 中只有对象 。
为什么一个对象需要关联到另一个对象?这个问题我也想知道 , 因为就我目前的项目经验 , 用到原型的次数寥寥无几 , 好几次还是我强行加进去的 。
在没有类以前 , 人们会把方法绑定在原型对象上 , 来达到节省内存的地步 。
作者在这里自问自答 , 自肯定的写作手法 , 多少让人忍俊不禁 , 这个问题非常好?你自己提的吧!
「类」函数多年以来 , JavaScript 中有一种奇怪的行为一直在被无耻的滥用 , 那就是模仿类 。 我们会仔细分析这种方法 。
这句话很重要 , JavaScript 中只有对象 。 连数组都是个伪数组 , 是由对象假装而成的 。 函数也是一个对象 。
基本类型连 null 都是一个对象 。
JavaScript 的基本类型 string nmber boolean undefined 不是对象 。
JavaScript 这门语言设计出来 , 本身就是作为脚本语言 , 是为了在一页中使用的 , 如今会去讨论设计蓝图的问题 , 也是因为它现在扮演着更为重要的角色 , 代码量也是极剧增加 。
这种奇怪的「类似类」的行为利用了函数的一种特殊属性:所有函数默认都会拥有一个名为 prototype 的公有并且不可枚举的属性 , 它会指向另一个对象:
function Foo() {
Foo.prototype // {
这个对象通常被称为 Foo 的原型 , 因为我们通过名为 Foo.prototype 的属性引用来访问它 。 然而不幸的是 , 这个术语对我们造成极大的误导 , 稍后我们就会看到 。 如果是我的话就会叫它「之前被称为 Foo 的原型的那个对象 。 」
- 编程|芒果口袋携手阿里巴巴地推第一人王志坚又掀业内新浪潮——成就数字化行业新高度!
- 九江市疾控中心新冠肺炎疫情常态化防控相关防护指南——图书馆篇
- 软件|黑色基调 ——西数SN770评测
- 传统媒体|品牌出海:Facebook广告投放指南——优惠广告怎么创建?
- 通讯:血染的小白鞋——一位“猪湾事件”幸存者的控诉
- 惠普新一代轻薄本——星14青春版|惠普星14青春版开售:全新12代酷睿 仅4099元
- javascript|在B端和C端公司做公关,有什么区别?
- javascript|现在分布式、云智能时代,应用软件开发简直得JavaScript者得天下
- 携程|现在分布式、云智能时代,应用软件开发简直得JavaScript者得天下
- 云米|0—1999元手机性价比排名:OPPO K9 Pro上榜!