博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript强化教程——从简到繁
阅读量:5771 次
发布时间:2019-06-18

本文共 2394 字,大约阅读时间需要 7 分钟。

  hot3.png

本文为机构官方HTML5培训教程,主要介绍:——javascript从简到繁

 

JS,无需编译,直译式脚本语言,解释器是JavaScript引擎-浏览器一部分。动态类型、弱类型、基于原型,内置支持类型。组成部分ECMAScript,描述了该语言的语法和基本对象。文档对象模型(DOM),描述处理网页内容的方法和接口。浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。 编程JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用try{}catch(){}︰console.log("a");//这是正确的console.log("b");//这是正确的console.logg("c");//这是错误的,并且到这里会停下来console.log("d");//这是正确的console.log("e");//这是正确的 try{console.log("a");}catch(e){}//这是正确的try{console.log("b");}catch(e){}//这是正确的try{console.logg("c");}catch(e){}//这是错误的,但是到这里不会停下来,而是跳过try{console.log("d");}catch(e){}//这是正确的try{console.log("e");}catch(e){}//这是正确的Javascript被归类为直译语言,因为目前主流的引擎都是每次运行时加载代码并解译。
Javascript原型总会给人产生一些困惑,无论是经验丰富的专家,还是作者自己也时常表现出对这个概念某些有限的理解,我认为这样的困惑在我们一开始接触原型时就已经产生了,它们常常和new、constructor相关,特别是函数(function)的原型(prototype)属性(property)。事实上,原型是一种非常简单的概念。为了更好的理解它,我们应该首先记住这个原则,那就是忘记我们已经学到的关于构造原型(construtor prototypes)的认识。什么是原型?原型是一个对象,其他对象可以通过它实现属性继承。任何一个对象都可以成为原型么?是哪些对象有原型所有的对象在默认的情况下都有一个原型,因为原型本身也是对象,所以每个原型自身又有一个原型(只有一种例外,默认的对象原型在原型链的顶端。更多关于原型链的将在后面介绍)好吧,再绕回来,那什么又是对象呢?在javascript中,一个对象就是任何无序键值对的集合,如果它不是一个主数据类型(undefined,null,boolean,number,or string),那它就是一个对象你说每个对象都有一个原型,可是我当我写成({}).prototype 我得到了一个null,你说的不对吧?忘记你已经学到的关于原型属性的一切,它可能就是你对原型困惑的根源所在。一个对象的真正原型是被对象内部的[[Prototype]]属性(property)所持有。ECMA引入了标准对象原型访问器Object.getPrototype(object),到目前为止只有Firefox和chrome实现了此访问器。除了IE,其他的浏览器支持非标准的访问器__proto__,如果这两者都不起作用的,我们需要从对象的构造函数中找到的它原型属性。下面的代码展示了获取对象原型的方法
JavaScriptvar a = {};  //Firefox 3.6 and Chrome 5  Object.getPrototypeOf(a); //[object Object]    //Firefox 3.6, Chrome 5 and Safari 4 a.__proto__; //[object Object]    //all browsers  a.constructor.prototype; //[object Object]var a = {};   //Firefox 3.6 and Chrome 5   Object.getPrototypeOf(a); //[object Object]     //Firefox 3.6, Chrome 5 and Safari 4  a.__proto__; //[object Object]     //all browsers   a.constructor.prototype; //[object Object]

ok,一切都进行的很好,但是false明明是一个主数据类型,可是false.__proto__却返回了一个值
当你试图获取一个主数据类型的原型时,它被强制转化成了一个对象

//(works in IE too, but only by accident)  false.__proto__ === Boolean(false).__proto__; //true

我想在继承中使用原型,那我该怎么做?

如果仅仅只是因为一个实例而使用原型是没有多大意义的,这和直接添加属性到这个实例是一样的,假如我们已经创建了一个实例对象 ,我们想要继承一个已经存在的对象的功能比如说Array,我们可以像下面这样做( 在支持__proto__ 的浏览器中)

//unusual case and does not work in IEvar a = {};a.__proto__ = Array.prototype;a.length; //0

转载于:https://my.oschina.net/yom/blog/700470

你可能感兴趣的文章
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
BOM
查看>>
iOS: Block的循环引用
查看>>
MySQL类型转换
查看>>
变量声明提升1
查看>>
sed 对目录进行操作
查看>>
移动端开发单位——rem,动态使用
查看>>
系列文章目录
查看>>
手把手教你如何提高神经网络的性能
查看>>
前端布局原理涉及到的相关概念总结
查看>>
递归调用 VS 循环调用
查看>>
使用sstream读取字符串中的数字(c++)
查看>>
树莓派下实现ngrok自启动
查看>>
javascript静态类型检测工具—Flow
查看>>
MachineLearning-Sklearn——环境搭建
查看>>
node学习之路(二)—— Node.js 连接 MongoDB
查看>>
《深入理解java虚拟机》学习笔记系列——垃圾收集器&内存分配策略
查看>>
TriggerMesh开源用于多云环境的Knative Event Sources
查看>>
GitLab联合DigitalOcean为开源社区提供GitLab CI免费托管
查看>>