javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为javascript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给html网页增加动态功能。
JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。《燕十八 Javascript高级教程》是JavaScript学习的进阶教程,带领朋友们如何扩展的学习JavaScript语言,以使它适应特殊的需求。
视频播放地址:http://www.php.cn/course/214.html
本课程需要学习this的用法,了解this的含义,这个很重要,
立即学习“Java免费学习笔记(深入)”;
1. this 和构造器
this 本身就是类定义时构造器里需要用到的,和构造器在一起再自然不过。
/** * 页签 * * @class Tab * @param nav {string} 页签标题的class * @param content {string} 页面内容的class * */function Tab(nav, content) { this.nav = nav this.content = content} Tab.prototype.getNav = function() { return this.nav;};Tab.prototype.setNav = function(nav) { this.nav = nav;};Tab.prototype.add = function() {};
按照 JavaScript 的习惯, this 应该挂属性/字段,方法都应该放在原型上。
2. this 和对象
JS 中的对象不用类也可以创建,有人可能奇怪,类是对象的模板,对象都是从模板里 copy 出来的,没有类怎么创建对象? JS 的确可以,并且你完全可以写上万行功能代码而不用写一个类。话说 OOP 里说的是面向对象编程,也没说面向类编程,是吧 ^_^ 。
var tab = { nav: '', content: '', getNav: function() { return this.nav; }, setNav: function(n) { this.nav = n; }}
3. this 和函数
首先,this 和独立的函数放在一起是没有意义的,前面也提到过 this 应该是和面向对象相关的。纯粹的函数只是一个低级别的抽象,封装和复用。如下
function showMsg() { alert(this.message)}showMsg() // undefined
定义 showMsg,然后以函数方式调用,this.message 是 undefined。因此坚决杜绝在 纯函数内使用 this,但有时候会这么写,调用方式使用 call/apply
function showMsg() { alert(this.message)} var m1 = { message: '输入的电话号码不正确'}var m2 = { message: '输入的身份证号不正确'} showMsg.call(m1) // '输入的电话号码不正确'showMsg.call(m2) // '输入的身份证号不正确'
用这种方式可以节省一些代码量,比如当两个 类/对象 有一共相似的方法时,不必写两份,只要定义一个,然后将其绑定在各自的原型和对象上。这时候其实你还是在使用对象或类(方式1/2),只是间接使用罢了。