javaScript 真经 小感 this 指向
编程世界只存在两种基本元素:一个是数据、一个是代码。
(能写代码算入门,能处理复杂场景或者数据算合格,能不变应万变是不朽)
最流行的编程思想莫过于面向对象编程,因为面向对象编程思想把数据和代码结合成统一整体,将杂乱的算法和子程序及复杂的数据结构 划分为清晰有序的对象结构。
(js分两种写法:一种面向过程,一种面向对象;面向过程基本就是想到啥写啥,能力强点的给你封装到极致、得体、便与后续阅读; 面向对象就是抽象功能具体化,便于后续扩展,需要深厚功力)
对象本无根,类型亦无形,本来无一物,何处惹尘埃?
(es3无类的定义,但是可以模拟出类的行为特点)
JavaScript 就是把数据和代码简化到最原始的程度。
(js是动态的弱类型语言,数据类型少,轻松互转,不需要生成额外文件跨平台,对象字面量更是直观明了,人性化。)
JavaScript 的简单数据只有五种:number、string、boolean、undefined、null(这哥们特殊,是 object 类型),复杂数据只有一种:object;类似中国的金木水火土,其他复杂的都是由这五种基本元素组成。
(
typeof function(){} "function"
typeof {} "object"
typeof null "object"
typeof [] "object"
typeof 1 "number"
typeof '1' "string"
typeof undefined "undefined"
typeof true "boolean"
typeof NaN "number"
)
js 世界里代码精髓体现为 function。
(正常点的代码基本都是放在 function 里面的)
js 执行引擎并非一行行执行,而是一段段执行。
(此处涉及到一个预编译的概念:函数代码段分步载入 - 变量定义提升 - 函数声明提升 ,按顺序执行 )
函数具有对象全部特征,因为 Function 是 函数祖先,而 Object 是 Function的祖先。
(js 设计完成,已经包含多态对象:函数、日期、正则、数组等。即 ECMAScript 已经内部完成了 由 object 到这些 语法糖的转换,无需怀疑,放心使用,肯定比你自己写出来的继承要好 ~~ )
this 不一定是函数所属对象,可以是任意对象,取决于函数执行时所配置的对象。
(
this指向分三类吧:
var f=function(){};
var o={};
o.f=f;
1. f() window
2. o.f() o
3. f.call(0) o
)
(
还有 this 在 dom中的this指向,及 h5 bind 对 this 指向改变
)
json 即 JavaScript object notation ,js对象表示法,为创建对象提供了最简洁写法: {},逗号分隔项目,项目内分号分隔属性与属性值,即 对象的字典结构。
(
{name:'wj',age:'28'},和小学生查字典这的很像啊,通过name找到wj,通过age找到28,这些数据又依据规则逗号成列在一起...,可读性比xml好太多了,如果同时期出来,绝对完爆它
)
js 中所有的 function 都有一个属性 prototype ,指向一个对象。
(这就是继承了,知道这个,你便可以修改已有的函数、扩展新的函数、面向对象思维编码)
通过 prototype 形成原型链,追根溯源,知道找到匹配的或者结束。
(
写个小故事:
抗日战争时期,有人举报小明家有一个八路,日本军阀要找出他,先找到小明,然后找他爸,再找他爷爷,一旦确定是某个人后就停止寻找。
如果小明是八路则直接带走,并不再寻找。
他不是,则找他爸,是则带走,并不再寻找。
他爸也不是的话,就找他爷爷,是则带走,并不在寻找,
如果他爷爷也不是,那么说明小明家没有八路,也停止寻找。
)
最新文章
- CSS Reset
- CRLF line terminators导致shell脚本报错:command not found
- text-shadow文字阴影属性用法
- LINQ to Entities 查询语法
- 如何用OCR图文识别软件在文档里复制内容
- MOOC即Massive Open Online Course的缩写
- MEMS陀螺仪(gyroscope)的工作原理
- Citrix 服务器虚拟化之三十二 XenConvert
- Java线程并发中常见的锁--自旋锁 偏向锁
- django中mysql数据库设置错误解决方法
- 小米Adnroid默认禁止悬浮框的使用,导致开发的悬浮框无法接收事件
- git 知识点汇总
- PHP 利用CURL(HTTP)实现服务器上传文件至另一服务器
- zw量化交易·实盘操作·系列培训班
- 昕有灵犀-xyFS私有文件云存储OSS服务
- 如何在ubuntu系统里面用新加装的硬盘对系统进行扩容
- NGINX 添加MP4、FLV视频支持模块
- Oracle创建表、修改表、删除表、约束条件语法
- Treflection03_getFields_getField
- webConfig中<;customErrors>;节点配置
热门文章
- 香港主机Squid+Stunnel代理搭建
- postgresql 表空间创建、删除
- Jenkins之构建执行脚本权限问题
- 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项
- Firefox不能加载TinyMCE的问题
- 自动化工具构建vue项目
- 第1章 1.8计算机网络概述--OSI参考模型和网络排错
- [随感]GIS开发的困惑
- HDU2588:GCD(欧拉函数的应用)
- 破解NET的四大神器(转)