js面相对象基础

[b]1、对象的定义[/b]
空对象:
     (1) var obj = {};
(2) var obj = new Object();

var obj = {name:'chen',age:24};//对象,name 和age相当于this.name;this.age


[b]2、构造函数[/b]
var Person = function(){
this.name = 'chen';//this表示为属性,相比java的public修饰的属性
this.age = 25;
var aa = 1; //var 定义的为私有属性,可以通过闭包来获取
this.say = function(){

alert(aa);
}
}

对象的constractor 指向 初始化的构造函数,
[color=red]注意 ,下面会提到,当遇到下面情况时,应重新赋值prototype的constructor[/color]
var F = function(){};

F.prototype = Animal.prototype;

Cat.prototype = new F();

Cat.prototype.constructor = Cat;

总之,这是很重要的一点,编程时务必要遵守。下文都遵循这一点,即如果替换了prototype对象

3、数组
var array = []; 或 var array = new Array();
数组为特殊的对象,有特殊属性length, 当属性名为数字或能转换成数字的字符串时
的时候,才会影响到length属性

4、函数
关键字:function;
特殊属性:arguments可取到出来的参数; arguments.callee表示当前所在的方法
通过this关键字来获取调用者的引用,从而获取方法者的各种属性及方法

5、每个对象或方法都有一个prototype属性,指向一个prototype对象,可以用于js的继承
例子:
var Animal = function(){
this.type = 0;
this.say = function(){
alert(1);
}
}


var Dog = function(){

}

Dog.prototype = new Animal();

alert(new Dog().type);
new Dog().say();


6、方法,函数
当作为一个函数的属性时,叫做这个函数的方法,没有则称作函数或构造函数;
每一个方法都有一个call方法 和 apply方法,可以模拟对象的调用方法
方法.call(对象, 参数,参数,参数....);
方法.apply(对象,[参数,参数,参数....]);

7、[color=red]函数[/color]的作用域
js中无块级别作用域,造成,在一个{}中,任何位置定义的变量,在这里任何位置都可以访问,所以最好在{}的开头就把所有需要的变量定义好
[color=red]注意: 局部变量只要定义,则全局同名变量则无效
函数的作用域在定义的时候就定义好了[/color]

8、闭包
函数内部的函数被函数外部的一个变量引用时,就创建了一个闭包;
函数的引用有效 ---》 函数 则有效 ---》 函数所依赖的作用域也有效,不会被销毁

9、四种调用模式中this的区别
(1)、方法调用模式 this即绑定到该对象上
(2)、函数调用模式 this绑定到全局对象上,解决办法,定义一个变量来保存this
var that = this;
(3)、构造器调用模式
(4)、apply调用模式

10、call方法的实现继承
function Class1() 
{
this.showTxt = function(txt)
{
alert(txt);
}
}

function Class2()
{
Class1.call(this);
}

var c2 = new Class2();

c2.showTxt("cc");

这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象就能够直接调用Class1 的方法以及属性了,执行结果就是:alert(“cc”);

对的,就是这样,这就是 javaScript 如何来模拟面向对象中的继承的,还可以实现多重继承。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值