美文网首页
JS面向对象中常用的方法

JS面向对象中常用的方法

作者: 半杯半 | 来源:发表于2019-06-28 11:39 被阅读0次

    1‘’最简单的面向对象处理数据中最常用的JSON形式,在创建对象的同时,把需要的属性直接声明并赋值。

    var cat = {

    name:"tom",

    color:"gray"

    }

    //或者,先创建创建空对象,再设置属性

    var cat = {};

    cat.name = "tom";

    cat.color = "gray";

    //也可以这样写

    cat["name"] = "tom";

    cat["color"] = "gray";

    如果想添加一个方法

    var cat = {

    name:"tom",

    color:"gray",

    say:function(){

    alert("i'm "+this.name+",miao~");

    }

    }

    //或者

    cat.say = function(){

    alert("i'm "+this.name+",miao~");

    }

    cat.say();//调用方法

    如果我们再创建一只猫可以

    var cat2 = {

    name:"kitty",

    color:"white"

    }

    cat2也想要一个say方法那还得按上面的那种方式赋值,这就出来一个问题我有几个猫我就得写几次,在编程的角度这种的我们就可以进行封装了,说道封装就得跟继承挂钩了 例子如下

    原型方式

    //定义cat构造方法,方法体里有用到this,即调用方法的对象

    //通常构造器对通过new 关键字来调用,这意味着js创建了一个新的对象,这个对象就是执行这个方法的this,返回值也是这个this

    function Cat(name,color){

    this.name=name;

    this.color=color;

    }

    //Cat就是创建猫对象的方法,我们可以获取其原型对象,并为原型对象添加一个say方法

    Cat.prototype.say=function(){

    alert("i'm "+this.name+",miao~");

    }

    //创建一个cat

    var cat = new Cat("tom","gray");

    //调用say方法

    cat.say();

    //创建第二个cat2

    var cat2=new Cat('toni','blue');

    cat2.say()

    这就封装好了

    2,.面向对象中我们常用到的方法

    constructor属性

    对于上文的cat对象,我们可以通过cat.constructor获取其构造函数,也就是Cat对象,注意Cat是一个方法;

    cat.constructor == Cat;//true

    instanceof运算符 (也可以判断类型具体百度跟typeof的却别)

    用于判断cat对象是否由Cat方法创建,等价于:a对象是否是A类的实例;

    cat instanceof Cat;//true

    proptotype.isPrototypeOf(obj)方法

    proptotype对象都有方法isPrototypeOf(obj),用于判断obj是不是proptotype的实例,作用和instanceof类似;

    Cat.prototype.isPrototypeOf(cat);//true

    obj.hasOwnProperty(propName)方法

    每个对象都有hasOwnProperty(propName),用于判断某个属性,是由本对象在声明时自己定义的,还是由prototype定义的,true表示前者,false表示后者,propName是个字符串,表示属性名称。

    通常返回true的话,我们成为这个属性为“本地属性”,反之成为“原型属性”。

    cat.hasOwnProperty("name");//true

    cat.hasOwnProperty("say");//false,方法say也是属性,这里不要写成“say()”

    in运算符(这个经常用可以判断json里面有没有这个属性跟方法)

    in运算符有两个作用,一个是判断某个对象是否包含某个属性,不管是本地还是原型属性;另一个更常见,可以用来遍历一个对象的所有属性

    "name" in cat;//true,name 是 cat的属性

    //遍历出 name、color、say三个属性

    for(var propName in cat){

    alert(propName);//propName 是字符串

    alert(cat[propName]);//通过对象[属性名]的方式,访问属性的值

    }

    相关文章

      网友评论

          本文标题:JS面向对象中常用的方法

          本文链接:https://www.haomeiwen.com/subject/slrscctx.html