华易动力天津网站制作公司 免费咨询热线:400-0022-823 电话:022-28261501 28335110
地址:天津市河西区围堤道146号华盛广场B座22楼
点击这里给我发消息  点击这里给我发消息  点击这里给我发消息
  首页 关于我们 建网站:从这里开始 域名空间服务 案例展示 新闻中心 网站制作知识 网站设计技巧 人才招聘 联系我们  
  网站制作知识
程序制作
数据库知识
域名空间知识
SEO网站优化
天津网站制作方案 更多..
如何获得了大量的好的外链资源
常见的长尾关键词组合方法
如何利用百度平台获取流量
营销优化型网站的简介
新顶级域名的形式
网站建设分为如下八步
网站专题设计
关于门户网站设计方案
华易动力售后服务规范
服务器机房介绍
优秀客户展示(排名无先后) 更多..
环化(天津)燃气设备安装有限公司
天津市国信投资担保有限公司
天津城市职业学院
天津大学EMBA
南开大学CID
北京同仁堂天津药店有限公司
金权道(天津)餐饮管理有限公司
天津市友好合作城市企业促进会
天津天大求实电力新技术股份有限公司
天津红旗农贸投资控股有限公司
天津二人锅餐饮管理有限公司
天津市滨湖剧院
渤海产业投资基金管理有限公司
天津天富软管工业有限公司
新闻中心-行业资讯 更多..
· 企业为什么要做APP   2016-11-24
· 如何搭配网站   2016-11-16
· css表单布局的五个小技巧   2016-11-16
· 服务器维护的重点   2016-11-14
· 如何建设你想要的网站类型   2016-11-14
· 阿里设计师用这2方法提升设计创新力   2016-11-3
· 我们看过的各种设计理论法则   2016-11-3
· Windows 8设计时的安全性   2013-12-27
· 未来网站技术的发展   2013-10-12
· 企业网站建设规划   2013-7-30
全部信息 当前位置:首页网站制作知识 → 详细内容
深入JavaScript
更新时间:2013/7/15 点击:1281次

javaScript 设计 PRototype 的目的就是为了继承, 所以不要把 prototype 用作其它目的.

为什么 Javascript 使用 prototype 来实现继承呢? 因为 JavaScript 诞生的最初目的是为了实现前端表单验证, 当时的 Internet 太慢了, 传到后台验证等不起. 所以 JavaScript 的作者认为没有必要把继承设计的像 Java 里那样复杂, 就选了用 prototype.

  1. Undefined类型: 只有一个值 undefined. 一个变量没有被赋值的时候就是该值.
  2. Null类型: 只有一个值 null. 对象的值故意留空的时候为该值.

这里是一个有趣的地方:

1
2
3
undefined == null;    // true
  
undefined === null;    // false

 我记得这种结果的原因是, null是从undefined派生出来的.

-----------------

JavaScript规范里写着有三种对象: 原生对象, 内置对象; 宿主对象

原生对象包含内置对象, 在程序执行之间就存在的对象.

宿主对象由宿主环境提供, 比如: 浏览器, Adobe软件等

 

在内置对象中, 有一大部分有点特殊功能! 那就是函数对象!!

那么语言内部是怎么标识的呢? 有一个内部属性[[Class]]

如果是一般的对象, 内部[[Class]]属性值为 "Object";

如果是函数对象, 内部的[[Class]]属性值为 "Function";

函数对象有的是普通函数, 比如: parseInt();

而有的又有一些特殊功能, 就是可以当构造器用, 叫做构造函数, 它们会在内部实现 [[Construct]] 方法,  比如 Array();

注意这里, parseInt() and Array() 都是函数对象, 都是对象!!

---------

所有函数对象会隐式的引用 Function.prototype (为什么? 乌龟的屁股 -- 规定!)

所有内置的原型对象, 会隐式的引用 Object.prototype. (为什么? 乌龟的屁股 -- 规定!)

看到这儿, 细心的人可能会有个疑问, Object.prototype也是内置的原型对象, 它也会自己隐式的引用自己? 怎么这么奇怪?

答: 是有点混乱, 于是有了 补充规定: 除了 Object.prototype , 其它内置原型对象会隐式的引用 Object.prototype

怎么通过代码来检测上面给出的定理一样的东西呢.. 还记得在上篇中 prototype隐式的引用可以用 __ proto__ 来访问.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 下面是一些 完全等于 关系, 大家可以把 ".__proto__ === " 想像成一条绳索, 可以
// 把左右两个对象串联起来. 假如找一个属性, 在左边没找到的话, 就会沿着绳索爬过右
// 边继续边, 要是没找到就继续往右爬 - -, 直接到最后爬到一个null - 空对象上.
  
// 内置函数对象隐式引用 Function的原型对象
parseInt.__proto__ === Function.prototype
Array.__proto__ === Function.prototype
Object.__proto__ === Function.prototype
// 注意 Function 自己也不例外
Function.__proto__ === Function.prototype
  
// 内置原型对象隐式引用 Object 的原型对象
Function.prototype.__proto__ === Object.prototype
Array.prototype.__proto__ === Object.prototype
  
// 再来一个等式, 原型链的终点
Object.prototype.__proto__ === null
  
/*
通过上面的等式, 我们可以建立起一些绳索(把 .__proto__ === 替换成绳子!):
  
parseInt() ~~~ Function.prototype ~~~ Object.prototype ~~~ null
Array() ~~~ Function.prototype ~~~ Object.prototype ~~~ null
Object() ~~~ Function.prototype ~~~ Object.prototype ~~~ null
Function() ~~~ Function.prototype ~~~ Object.prototype ~~~ null
*/

 这篇里讲的都是内置的东西, 也是基础! 理解好之后继承就好理解了, 关系也清楚了.

如果还是迷糊, 为什么是上面那个样子, 有一招, 记住它们是乌龟的屁股 -- 规定!

 
  公司总机:022-28261501 28335110
客户服务邮箱:service@nfree.cn,手机直线:15822335163
CopyRight 2006~2024 All Rights Reserved 天津市华易动力信息科技有限公司
地址:天津市河西区围堤道146号华盛广场B座22楼 邮编:300202

津公网安备 12010302001042号


在线QQ(售前咨询)
点击这里给我发消息  点击这里给我发消息  点击这里给我发消息