您的位置:首页 > 移动开发 > Objective-C

JS高级 - 面向对象1(this,Object ,工厂方式,new )

2017-10-05 00:50 519 查看
面向对象三要素:


封装

继承

多态


1.this 详解,事件处理中this的本质

window

this —— 函数属于谁

<script type="text/javascript">

var arr=[12,65,87];
//this:当前的方法,属于谁
arr.show =function (argument) {
// body...
console.log(this);      //[12,65,87]
}
arr.show();

function show(){
console.log(this);      //window
}
show();

</script>

2.Object 的使用:

<script type="text/javascript">
var obj = new Object();
obj.aaa = 12;
obj.show = function (argument) {
console.log(this.aaa); //12
}
obj.show();
</script>

3.工厂方式:

<script type="text/javascript">
function createPerson(name, sex) {
var obj = new Object();
obj._name = name;
obj._sex = sex;

obj.showName = function() {
console.log('我的名字叫:' + this._name);
}
obj.showSex = function() {
console.log('我是' + this._sex + '的');
}
return obj;
}

var p1 = createPerson('唐三', '男');
p1.showName();
p1.showSex();

var p2 = createPerson('唐九妹', '女');
p2.showName();
p2.showSex();
</script>

工厂方式的问题:

1.没有new

2.每个对象都有一套自己的函数 —— 浪费资源

4.new的情况:

<script type="text/javascript">
function createPerson(name, sex) {
//var this = Object();
this._name = name;
this._sex = sex;

this.showName = function() {
console.log('我的名字叫:' + this._name);
}
this.showSex = function() {
console.log('我是' + this._sex + '的');
}
//return this;
}

var p1 = new createPerson('唐三', '男'); //new 的情况下
p1.showName();
p1.showSex();

var p2 = new createPerson('唐九妹', '女');
p2.showName();
p2.showSex();
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: