标签:log 参数 创建 代码 详解 对象 传值 封装 return
Js是一门面向对象的语言,里面没有类的思想,所以直接是创建对象,下面介绍几种创建对象的方法:
1.对象字面量的方法:记住键值对格式:{key:value,key :value}
实例:
Var obj={name:”演员”,move:”长城”,age:”18”}
如果想再创建一个新的对象,只能重复上面的操作,所以可操作性差,不能被重复使用,造成的直接后果就是代码的冗余度很高
2使用内置的构造函数 object
Var obj=new Object();
Obj.name=”梁朝伟”;
Obj.movie=”赤壁“;
Obj.age=”38”;
如果我们想在定义一个新的对象,该段代码的缺点显而易见了
3.封装一个工厂函数来解决上述的问题
function createStar(name,movie ,age){
var o=new Object();
o.name=name;
o.movie=movie;
o.age=age;
o.say=function(){
console.log(“我是”+this.name);
}
return o;
}
var obj=createStar(“”,””,28);
var obj1=createStar(“”,””,38);
4.自定义构造函数
//什么是构造函数?
//构造函数其实也是函数,但是通常用来初始化对象
//并且和new关键字同时出现
function Person(){
this.name="憨力";
this.age=28;
this.say=function(){
alert("我是"+this.name);
}
}
var p=new person();
也就是可以进行传值,此时this指向的就是p对象
遇到的问题1:
如果person(),被当成普通的函数执行,就会遇到一个问题,this的指向会是windows
遇到的问题2:
每创建一个新的对象,函数say就会被调用一次,这样就造成了函数被多次调用,造成了系统资源的极大栏废
如果在在构造函数之外创建一个函数呢?
如 :function say(){
alert(“”);
}
把上面的函数改成有参数的函数
function Person(name,age,func){
this.name=name;
this.age=age;
this.say=func; }
var pp=new Person(“”,””,say);
但是又会造成新的问题;全局变量的污染,怎么解决呢?就涉及到原型的问题了。
预知后文如何,且听以后的分解吧!
标签:log 参数 创建 代码 详解 对象 传值 封装 return
原文地址:http://www.cnblogs.com/z-web-2017/p/6930647.html