JavaScript-Verbesserungs-Tutorial – Von einfach zu komplex
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__, 如果这两者都不起作用的,我们需要从对象的构造函数中找到的它原型属性。下面的代码展示了获取对象原型的方法
JavaScript 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] 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, alles läuft gut, aber false ist offensichtlich ein Hauptdatentyp, aber false.__proto__ gibt einen Wert zurück
Wenn Sie versuchen, den Prototyp eines primären Datentyps abzurufen, wird dieser in ein Objekt umgewandelt.
//(works in IE too, but only by accident) false.__proto__ === Boolean(false).__proto__; //true
Ich möchte Prototypen bei der Vererbung verwenden. Was mache ich also?
Es macht wenig Sinn, einen Prototyp nur für eine Instanz zu verwenden. Dies ist dasselbe wie das direkte Hinzufügen von Eigenschaften zu dieser Instanz. Wenn wir bereits ein Instanzobjekt erstellt haben, möchten wir ein vorhandenes erben . Die Funktion eines Objekts, wie z. B. eines Arrays, können wir wie folgt ausführen (in Browsern, die __proto__ unterstützen)
//unusual case and does not work in IE var a = {}; a.__proto__ = Array.prototype; a.length; //0
Das obige ist das Tutorial zur JavaScript-Verbesserung – von einfachen bis hin zu komplexen Inhalten, besuchen Sie bitte, um mehr zu erfahren Verwandte Inhalte Folgen Sie der chinesischen PHP-Website (www.php.cn)!