继上一篇 对象、for in、

对象回顾
//对象的第一种创建方式,通过对象直接量创建
var obj = {
    name : "胖胖",
    age : 18,
    sex : "男",
    fin : function(){
        alert("胖胖在讲课");
    },
    clothing : {
        color : "red",
        height : "100px",
        width : "100px"
    }
};
alert(obj.name);  //访问对象属性
alert(obj["name"]); //访问的第二种方式

alert( obj.fin );
obj.fin();

alert( obj.clothing.color );


//修改属性
obj.age = 19;
alert(obj.age);


//删除属性
delete obj.age;
alert(obj.age);
for in
// for in 的使用 用作遍历对象的属性
var obj = {
    name : "小明",
    age : 18,
    sex : "男"
};

for(var i in obj){
    // alert(i);//拿到的是对象的属性
    alert( obj[i] );
}

var arr = [1,22,4,7];
for(var i in arr){
    // alert(i);//打印的是数组的下标
    alert(arr[i]);
}


// with的使用
var obj = {
   name : "小明",
   age : 18,
   sex : "男"
};


with(obj){
   var n = name;
   var a = age;
   var s = sex;
}
alert(n);
alert(a);
alert(s);
类与对象

类:“类”这个词是抽象的,不是具体的某一个;比如狗,指的就是狗这一类动物,是所有的狗,不是某一只具体的狗
对象:对象是类的实例,是具体的。比如小明家的狗,这个对象指的就是具体的狗,是小明家的那一只

数组是类
var arr1 = new Array(); //arr是一个数组对象

instanceof作用
// instanceof作用:用来判断一个对象是不是某一个类的实例
//需求:怎么判断obj 是不是一个数组
var obj = new Array();
// alert(typeof obj);//打印的是object


alert(obj instanceof Array);  //打印true 说明obj是Array的一个实例
alert(obj instanceof Date);   //打印false 说明obj不是Date的一个实例
this
//this指向的是当前引用的那个对象
var obj = {
    name : "胖胖",
    age : 18,
    sex : "男",
    eat : function(){
         alert(this);        //打印object
         alert(this.name);   //打印胖胖   this指的就是obj
         alert("胖胖在吃饭");
    },
    clothing : {
        name : "衣服",
        fin : function(){
             alert(this);        //打印object
             alert(this.name);   //打印衣服  this指的就是obj.clothing
        }
    }
}
对象的第二种创建方法
//对象的第二种创建方式,可以通过new操作符来创建
var obj = new Object();
var arr = new Array();
var date = new Date();


var obj = new Object();
obj.name = "胖胖";
obj.age = 18;
obj.sex = "男";
obj.eat = function(){
    alert("胖胖在吃饭");
};
obj.eat();


var obj2 = new Object();
obj2.name = "小明";
obj2.age = 19;
obj2.sex = "男";
obj2.eat = function(){
    alert("小明运动");
};
obj2.eat();

//这种创建方式的缺点:想要创建一个相似的对象,就会产生大量代码
工厂模式
//工厂模式:可以解决第二种创建对象的缺点;

function dog(name,age,sex){   //dog是不是相当一个类
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.sex = sex;
    return obj;
}

var obj1 = dog("小黑",3,"男");
// alert(obj1.sex);
var obj2 = dog("小红",2,"女");
// alert(obj2.name)

//alert(obj1 instanceof dog);   //打印false  不能说明obj1是dog类的一个实例
//缺点:不能识别创建的对象是哪个类的实例
构造函数
//函数也可以是构造函数(或者是类)
//如果函数要当成构造函数来使用的话,就把第一个字符大写,区分普通的函数
function Dog(name,age,sex){  //也可以说这里是一个Dog类

    this.name = name;   //这里的this指的是谁,答:指的就是当前new的对象
    this.age = age;
    this.sex = sex;
}


var obj = new Dog("小黑",18,"男");
// alert(obj.name);
// alert(obj instanceof dog);  //打印true 说是obj 是 Dog类的一个实例

var obj1 = new Dog("小花",17,"女");
prototype
//prototype原型  相当于java中的static 静态的 公共的
function Dog(name,age,sex){

    this.name = name;
    this.age = age;
    this.sex = sex;
}

Dog.prototype.eat = function(){  //给Dog原型上添加一个eat方法,这样的话new一个对象都会具有这个方法
    alert("吃东西");
};

var dog1 = new Dog("小花",3,"女");
var dog2 = new Dog("小黑",3,"男");
dog1.eat();
dog2.eat();
给数组添加一个去重的方法
Array.prototype.removeRepetition = function(){

    var arr = [];
    for(var i = 0; i < this.length; i++){

        if( this.indexOf( this[i]) == i ){
            arr.push(this[i]);
        }
    }

    this.length = 0;   //this指的就是arr1   这里把arr1这个数组清空
    for(var j = 0; j < arr.length; j++){
        this[j] = arr[j];
    }
};
var arr1 = [11,11,11,23];
arr1.removeRepetition();
alert(arr1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值