JS的面向对象
1.如果是可以new对象的方法,命名应该用Pascal。这样别人一看就知道,这是用来创建对象的方法。
2.JS中,方式这些用来创建对对象的方法,一般都叫做“构造函数”,在JS中,对象是通过“构造函数”创建出来的
function Person(){
}
3.通过“构造函数”创建对象p
var p = new Person();
4.对于一个方法,如果直接调用,那么就认为是一个普通的方法;如果通过new关键字调用,表示创建一个这个方法类型的对象。
5.js可以直接创建对象的属性。
p.name='李天霸';
p.age=2000;
p.email='litianba@vip.tiantang.com';
p.sayHi = function(){
alert('我是:'+this.name+'今年:'+this.age+'岁了,邮箱是:'+this.email);
}
//-----------------------创建一个带有属性的构造函数Person2
function Person2(name,age,email){
this.user_name=name;
this.user_age=age;
this.user_email=email;//这里不能省略this,这里的this表示将来new出来的对象
this.sayHi=function(){
alert('我是:'+this.user_name+'今年:'+this.user_age+'岁了,邮箱是:'+this.user_email);
};
//给当前构造函数中增加一个私有的成员
var _gender;//方法中通过var 声明的变量,只有方法内部才能访问,外部访问不到
//为_gender 这个"私有成员"成员,封装两个公有的方法
this.get_gender=function(){
return _gender
};
this.set_gender=function(gender){
if(gender=='男'||gender=='女'){
_gender=gender;
}
else{
alert('赋值错误');
}
};
}
}
var mtt = new Person2('马天天',22,'mtt@yahoo.com');
var ljt = new Person2('李家沱',21,'ljt@yahoo.com');
mtt.sayHi();
yjc.sayHi();
6.校验实例instanceof 相当于C#中的is
function Car(){
}
var p3= new Person2('seww',22,'seww@yahoo.com');
var c=new Car();
alert(p3 instanceof Person2);//true
alert(p3 instanceof Car);//false
7.通过对象字面量的方式创建对象
var wll = {
user_name: '王拉拉',
user_age: 18,
user_gender: '女神',
sayHi: function () {
alert('我叫' + this.user_name + '今年' + this.user_age);
}
};
wll.sayHi();
8.原型prototype
为什么要用原型
因为通过“构造函数”创建的对象,如果对象中的方法是用this创建的,那么每次创建,都会在内存中创建一个方法的副本。这样非常耗费内存。
8.1只有函数对象才有prototype
8.2原型的值是只读的,不能修改(如果创建的对象给原型的字段赋值,实际上是创建了一个属性并赋值)
8.3如果原型中的字段是引用类型(数组),那么数组的栈地址不可以改变。但是可以通过栈地址找到数组的数据,进行修改。
JS的面向对象笔记
最新推荐文章于 2022-05-07 07:44:46 发布