JS的面向对象笔记

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='[email protected]';
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,'[email protected]');
	var ljt = new Person2('李家沱',21,'[email protected]');

	mtt.sayHi();
	yjc.sayHi();

6.校验实例instanceof 相当于C#中的is

	function Car(){

	}
	var p3= new Person2('seww',22,'[email protected]');
	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如果原型中的字段是引用类型(数组),那么数组的栈地址不可以改变。但是可以通过栈地址找到数组的数据,进行修改。






发布了55 篇原创文章 · 获赞 4 · 访问量 1403

猜你喜欢

转载自blog.csdn.net/BowenXu11/article/details/105201887
今日推荐