重学前端

01 明确学习路线和方法

建立知识架构

一种是 html/css/js(但是除了这些语言 还有打包/测试/dom和bom等等问题) 一种是 文法/语义/运行时(粗略视为语法/语法的意义/算法和数据结构)

追本溯源

了解背景

02 前端知识架构图

写在另一篇 juejin.im/post/5cbe89…
前端架构的主要职责是兼容性、复用和能力扩展

03/04语义化

写在上面那一篇 juejin.im/post/5cbe89…
语义化就像写论文,规规矩矩遵守格式

05 js类型

写在上面那一篇 juejin.im/post/5cbe89…
js中的undefined是一个变量 而不是一个关键字 是js公认的设计失误

06 面向对象还是基于对象

对象: 一切事物的总称.
在《面向对象分析与设计》这本书中,Grady Booch替我们做了总结,他认为,从人类的认知角度来说,对象应该是下列事物之一:

一个可以触摸或者可以看见的东西;
人的智力可以理解的东西;
可以指导思考或行动(进行想象或施加动作)的东西。

对象有以下特征:

  1. 对象具有唯一标识性:即使完全相同的两个对象,也并非同一个对象。
    => 地址不同,不管内容如何,都不是同一个对象.
  2. 对象有状态:对象具有状态,同一对象可能处于不同状态之下。
    => 对象可以有自己的属性,并且同一个对象,属性可能不同
  3. 对象具有行为:即对象的状态,可能因为它的行为产生变迁。
    => 在调用对象方法的过程中,可以更改对象的属性

对象的两类属性

  1. 数据属性 的特征
    value:就是属性的值。
    writable:决定属性能否被赋值。
    enumerable:决定for in能否枚举该属性。
    configurable:决定该属性能否被删除或者改变特征值。
    大多数情况下我们只关心数据属性的值就可以

  2. 访问器属性(getter/setter) 的特征
    getter:函数或undefined,在取属性值时被调用。
    setter:函数或undefined,在设置属性值时被调用。
    enumerable:决定for in能否枚举该属性。
    configurable:决定该属性能否被删除或者改变特征值。
    以上值都默认为true
    可以用Object.getOwnPropertyDescripter来查看

var o = {a:1}
o.b = 2
Object.getOwnPropertyDescriptor(o,"a")
//{value: 1, writable: true, enumerable: true, configurable: true}
复制代码

想要改变属性的特征或者定义访问器属性,可以用Object.defineProperty

var o = { a: 1 };
Object.defineProperty(o, "b", {value: 2, writable: false, enumerable: false, configurable: true});
//{a: 1, b: 2}
Object.getOwnPropertyDescriptor(o,"a"); 
//{value: 1, writable: true, enumerable: true, configurable: true}
 Object.getOwnPropertyDescriptor(o,"b");
//{value: 2, writable: false, enumerable: false, configurable: true}
 o.b = 3;
console.log(o.b); // 2
复制代码

转载于:https://juejin.im/post/5ce20e5f51882525a20fd70e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值