1.javascript内置的数据类型
undefined : 未定义
number: 数字
boolean: 布尔值
string: 字符串
function: 函数
object: 对象
2. 一些关键字和方法的使用
1)this关键字用在两种地方:
- 在构造器函数中,指代新创建的对象实例
- 在对象的方法被调用时,指代调用该方法的对象实例
如果一个函数被作为普通函数(而不是对象方法)调用,那么在函数中的this关键字将指向window对象。与此相同的,如果this关键字不在任何函数中,那么他也指向window对象。
2)使用call()/apply()方法时,传入一个对象实例来指定对象的上下文环境中所出现的this关键字的引用(注:当传入参数为2个参数时候,该俩个函数的作用是对象间的复制)
function foo() {
// 下面的this指代调用该方法的对象实例
if (this===window) {
document.write('call a function.', '<BR>');
}else {
document.write('call a method, by object: ', this.name, '<BR>');
}
}
function MyObject(name) {
// 下面的this指代new关键字新创建实例
this.name = name;
this.foo = foo;
}
var obj1 = new MyObject('obj1');
var obj2 = new MyObject('obj2');
// 测试1: 作为函数调用
foo();
// 测试2: 作为对象方法的调用
obj1.foo();
obj2.foo();
// 测试3: 将函数作为“指定对象的”方法调用
foo.call(obj1);
foo.apply(obj2);
3).instanceof关键字来检测实例的类型
4) null是关键字,是对象(空对象, 没有任何属性和方法);undefined是Global对象的一个属性,undefined是undefined类;通过typeof()来判断数据类型.
document.writeln(typeof null);
document.writeln(typeof undefined);
5)NaN: 算术表达式的运算结果不是数字,则返回NaN值,可以通过isNaN()方法来判断返回的是不是NaN值.
6)function有俩个函数:
callee 属性来得到正在执行的函数对象的引用。
caller 属性,指向正在调用当前函数的父函数对象的引用。
//---------------------------------------------------------
// 调用栈的遍历
//---------------------------------------------------------
function foo1(v1, v2) {
foo2(v1 * 100);
}
function foo2(v1) {
foo3(v1 * 200);
}
function foo3(v1) {
var foo = arguments.callee;
while (foo && (foo != window)) {
document.writeln('调用参数:<br>', '---------------<br>');
var args = foo.arguments, argn = args.length;
for (var i=0; i<argn; i++) {
document.writeln('args[', i, ']: ', args[i], '<br>');
}
document.writeln('<br>');
// 上一级
foo = foo.caller;
}
}
// 运行测试
foo1(1, 2);
3.java面向对象支持
1)javaScript中对象的声明和实例的创建
JavaScript中对象的类型声明的形式代码
function 对象名(参数表) {
this.属性 = 初始值;
this.方法 = function(方法参数表) {
// 方法实现代码
}
}
创建实例的形式代码
var 实例变量名 = new 对象名(参数表);
2)通过原型(prototype)来实现类的继承和动态扩展
---------------------------------------------------------------------------------------------------------
function A(){}
A.prototype=new Object();
Object对象是A的一个原型,这样就相当于了把Object对象的属性和方法复制到了A上,这也就是javascript实现继承的方式。
----------------------------------------------------------------------------------------------------------
function Person(nameArg,genderArg,yearOfBirthArg,siteArg,privacyArg){
//公有属性
this.name = nameArg;
this.gender = genderArg;
this.yearOfBirth = yearOfBirthArg;
this.site = siteArg;
//私有属性,只有函数内部才能访问
var privacy = privacyArg;
//私有方法,只能在内部访问
function showPriveMethod(){
};
//公有方法
this.showPrivacy = function(){
alert('rrrrrr');
};
//this.showPrivacy:function(){alert('rrrrrr');};
}
//原型方法
Person.prototype = {
//公有方法
info:function(){alert("infor")},
func:function(){alert("func")}
}
//类方法
Person.Run=function(){alert("我是类方法")};
var nahao = new Person('Top css','男',1989,'www.javava.org','private');
document.writeln("====="+nahao.name);
nahao.showPrivacy();
Person.Run();
4.相关网站:
http://www.qefqei.com/javascript/Object
http://www.w3school.com.cn/js/