面向对象:对外统一提供调用接口的编程思想
属性:事物自身拥有的东西(如汽车拥有长、宽、高、颜色等)
方法:汽车,载人,来货
对象:众多人中的一个人
原型:所有函数都有一个prototype属性,该属性引用了一个对象,即原型对象。
原型对象的demo说明
function F(){
alert(F.prototype)//返回的值是object
}
//F.prototype---->>内存地址---->>存储了一个对象
函数构造器创建函数对象
//var obj = new Function(var1,var2...functionBody());
//var1、var2是正常的变量;functionBody()是自定义的函数体
//注意var1、var2~变量的顺序是不能改变的;缺点:效率低不灵活
函数构造器创建函数对象demo
var obj = new Function("a","b","return a+b" );
var s = obj(2,5);
alert(s);
js中的闭包
闭包的用途:1.读取函数内部变量 (在js中函数内部可以读取全局变量,外部则不能读取内部变量)2.让i变量保留
优缺点:1.用利于封装可以访问局部的变量;缺点:内存占用浪费严重,内存泄漏
闭包demo
//1.实现外部对局部变量的调用
//原使用方法function b(){
var i = 0;
alert(++i);
return i;
}
b();//弹出的结果是1
//闭包的方法
<script>
function a(){
var i=0;
//注意b里面是可以直接调用i的
function b(){
alert(++i);
}
return b;
}
var c = a();
c();//返回的结果是1,此处相当于直接调用的b
</script>
//2.让i变量保留
<script>
function f1(){
var n = 999;
nAdd = function(){
n = n+1;
}
function f2(){
alert(n);
}
return f2;
}
var rs = f1();
rs();//输出的结果是999;可能有的疑惑是为什么不返回的是1000;
</script>
对象声明的方式
对象声明方式的实例
<script>
//1.字面式直接声明(最基本)
//注意此处数据类型和文字类型声明的区别
//注意声明时,每个属性声明完之后用的 是逗号
var person = {
name:"zs",
age:26,
eat:function(fds){
alert("我在吃" + fds)
}
}
//调用属性和方法;先弹出zs,然后弹出 (我在吃面条)
alert(person.name);
person.eat("面条");
</script>
<script>
//2.new操作符跟oject构造函数
//注意此处的O要大写,否则会报错
var box = new Object();
box.name = "zs";
box.age = 100;
box.infos = function(str){
return this.name + "---" + this.age + "---" + str;
//这里的this指的就是当前对象,即box
}
alert(box.name);//此处不能用this了;显示zs
var con = box.infos("吃饭啦");显示 zs---100---吃饭啦
alert(con);
</script>
<script>
//3js构造方法声明对象(构造函数)
function person(name,sex,age){
this.name = name;//注意前面的name是属性,而后面的name是传的参数
this.sex = sex;
this.age = age;
this.show = function(){
alert(this.name + "---" + this.sex + "---" +this.age);
}
}
var obj = new person("zs","男",23)
console.log(obj.name);//弹出值是 zs
</script>
//4.工厂模式(就是在函数的内部创建对象)
<script>
//5。原型模式声明对象
//任何一个js方法或者函数,都自带一个prototype属性,且以对象的方式存在
//原型模式声明的根本:函数本身声明为空内容,利用prototype定义一些属性和方法
//所有实例化的对象,都拥有包含的属性和方法
function test(){
}
test.prototype.color = "red";
test.prototype.height = 1.7;
test.showInfo = function(){
alert(this.color + "---" +this.height )
};
var car = new test();
alert(car.height);//弹出的是1.7
</script>
<script>
//5.2 原型模式+json数据定义属性和方法
function test(){
}
test.prototype = {
color:"red",
heights:1.7,
showInfo:function(){
alert(this.color + "---" + this.heights);
}
}
var car = new test();
car.showInfo();
</script>