JavaScript this特性,静态方法 和实例方法,prototype
<script type="text/javascript">
function logs(str) {
document.write(str + "<br />")
}
//利用“this 指向函数调用者”的特性,可以实现链式调用。jQuery 中大部分都是链式调用
var oName = {
name: "aa",
age: 999
};
window.name = "I am window"; function showName() {
logs(this.name);
}
oName.show = showName;
window.show = showName;
oName.show(); /* aa */
window.show(); /* I am window */ oName.showName = function() {
logs(this.name);
return this; // JavaScript 中的“this”是函数上下文,不是在声明时决定的,而是在调用时决定的
};
oName.showAge = function() {
logs(this.age);
return this;
}
oName.showName().showAge(); // aa 999 //方法 静态方法 实例方法 java 中的一样的特性 实例方法必须声明对象,对象才可以调用
function staticClass() {}; //声明一个类
staticClass.staticMethod = function() {
logs("static method")
}; //创建一个静态方法
staticClass.prototype.instanceMethod = function() {
logs("instance method")
} //创建一个实例方法
staticClass.staticMethod(); //static method
//staticClass.instanceMethod(); //语句错误, 无法运行
new staticClass().instanceMethod(); //必须进行实例化才可以调用 instance method //动态原型方法的精髓在于使用 prototype 声明实例方法,使用 this 声明实例属性
function Car() {
this.color = "none"; //实例实属
if(typeof Car._initialized == "undefined") {
Car.prototype.showCar = function() { //实例方法
logs(this.color);
}
}
Car._initialized = true; //静态属性 ? 实例属性?
}
logs(Car.color); //undefined
logs(Car._initialized); //undefined ?
var car = new Car();
logs(car.color); //none
logs(Car._initialized); //true ?
logs(car._initialized); //undefined ?
car.showCar(); //none /*Car._initialized是静态属性
1 处报错, 是因为你的Car._initialized属性的赋值是在类里面, JS是解释到哪儿执行到哪儿,
正因为如此, 当有Car的实例产生的时候, 静态属性_initialized被赋值,
所以2处为true, 3 处不输出是因为它是静态属性, 不是实例属性。*/
</script>
ref:http://sblig.iteye.com/blog/1542896
JavaScript this特性,静态方法 和实例方法,prototype的更多相关文章
- JavaScript高级特性-创建对象的九种方式
1. 对象字面量 通过这种方式创建对象极为简单,将属性名用引号括起来,再将属性名和属性值之间以冒号分隔,各属性名值对之后用逗号隔开,最后一个属性不用逗号隔开,所有的属性名值对用大括号括起来,像这样: ...
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...
- javascript高级特性
01_javascript相关内容02_函数_Arguments对象03_函数_变量的作用域04_函数_特殊函数05_闭包_作用域链&闭包06_闭包_循环中的闭包07_对象_定义普通对象08_ ...
- javascript高级特性(面向对象)
javascript高级特性(面向对象): * 面向对象: * 面向对象和面向过程的区别: * 面向对象:人就是对象,年龄\性别就是属性,出生\上学\结婚就是方法. * 面向过程:人出生.上学.工作. ...
- Javascript面向对象特性实现封装、继承、接口详细案例
Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...
- JavaScript高级特性-数组
1. JavaScript中的数组 在C++.Java中,数组是一种高效的数据结构,随机访问性能特别好,但是局限性也特别明显,就是数组中存放的数据必须是同一类型的,而在JavaScript中,数组中的 ...
- 【Java初探外篇02】——关于静态方法与实例方法
在Java的学习中,我们知道,方法的使用是不可或缺的重要部分,在我们编写第一个Java程序hello world的时候,我们就要开始使用主方法main():它就是一个静态方法(static metho ...
- 使用JavaScript OOP特性搭建Web应用
最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员.四年半来她一直在从事 JavaScript 相关的工作,她自认为 JavaScript 技能非常好,但在不久之后我就发现实际上她对 J ...
- Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法
上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记. 后来从事前端工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知 ...
- js 构造函数 & 静态方法 & 原型 & 实例方法
js 构造函数 & 静态方法 & 原型 & 实例方法 ES5 "use strict"; /** * * @author xgqfrms * @licens ...
随机推荐
- Tomcat Manager 用户名和密码配置
在Tomcat中,应用程序的部署很简单,只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压.在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为To ...
- Codeforces Perfect Pair (JAVA)
http://codeforces.com/problemset/problem/317/A 题意:给两个数字,可以两数相加去替换其中一个数字.问要做多少次,可以让两个数字钟至少一个 >= 目标 ...
- 让我们一起Go(十二)
前言: 上篇中,我们讲到了在Go语言中如何定义方法,今天,我们将进一步深入Go语言的面向对象编程. 一.Go语言中的接口 首先来看一个最基本的接口: 和定义一个结构体类似,只不过将struct换成了i ...
- _set_invalid_parameter_handler异常处理函数
VS2005之后的版本,微软增加了一些新的异常机制,新机制在出现错误时默认不通知应用程序,这时程序就崩溃了.所以这种情况下,必须调用_set_invalid_parameter_handler._se ...
- DDD:关于模型的合法性,Entity.IsValid()合理吗?
背景 见过很多框架(包括我自己的)都会在实体的定义中包含一个IsValid()方法,用来判断实体的合法性,是否应该这样设计呢?本文就这个问题介绍一点想法,希望大家多批评. 实体能否处于“非法”状态? ...
- NopCommerce之任务执行
NOP任务提供两种:手动执行(立即)和定时执行两种. 首先来说下手动任务执行过程,下图是NOP定时任务管理界面: 从上面可以看出,我们可以选择具体的任务来手动执行任务(立即执行),当点击[立即执行]按 ...
- 斜堆(一)之 C语言的实现
概要 本章介绍斜堆.和以往一样,本文会先对斜堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理如出一辙,选择其中之一进行了解即可.若文 ...
- [OpenCV] Feature Matching
得到了杂乱无章的特征点后,要筛选出好的特征点,也就是good matches. BruteForceMatcher FlannBasedMatcher 两者的区别:http://yangshen998 ...
- 【转载】利用shell脚本获取一个文件的绝对路径readlink
转载自:http://os.chinaunix.net/a2007/1118/976/000000976787.shtml #! /bin/bash echo "Path to $(base ...
- debian7.1 sources.list
deb http://mirrors.163.com/debian wheezy main non-free contribdeb http://mirrors.163.com/debian whee ...