JavaScript面向对象(2)-一些属性、方法、运算符

1.hasOwnProperty()
每个实例对象都有一个hasOwnProperty()方法,用来判断某一个属性到底是本地属性,还是继承自prototype对象的属性。

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }

    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };

    var p1 = new CreatePerson('小明');

    alert( p1.hasOwnProperty("name") );  //true  本地属性
    alert( p1.hasOwnProperty("type") );  //false  继承自prototype对象的属性

</script>

2.constructor
每个对象在创建时都自动拥有一个构造函数属性constructor,其中包含了一个指向其构造函数的引用。而这个constructor属性实际上继承自原型对象,而constructor也是原型对象唯一的自有属性。

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }

    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };

    var p1 = new CreatePerson('小明');

    alert( CreatePerson.prototype.constructor==CreatePerson );  //true
    alert( p1.constructor==CreatePerson );  //false

</script>

3.instanceof 运算符
对象与构造函数在原型链上是否有关系

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }

    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };

    var p1 = new CreatePerson('小明');

    alert( p1 instanceof CreatePerson ); //true
    alert( p1 instanceof Object );  //true

</script>

4.toString()
系统对象下面都是自带的 , 自己写的对象都是通过原型链找object下面的。

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }

    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };

    var p1 = new CreatePerson('小明');
    var a1 = new Array();

    alert( p1.toString==Object.prototype.toString ); //true
    alert( a1.toString==Object.prototype.toString );  //false
    alert( a1.toString==Array.prototype.toString );  //true
</script>

toString() : 把对象转成字符串

var num=255;
alert(num.toString(16));  //'ff'  把数字转成十六进制对应的字符串

利用toString做类型的判断 (比如:判断一个对象是不是数组):

var arr = [];
alert( Object.prototype.toString.call(arr) == '[object Array]' ); //true

利用 constructor 和 instanceof 也可以做判断,但是特殊情况下会出现错误:

var oF = document.createElement('iframe');
document.body.appendChild( oF );

var ifArray = window.frames[0].Array;

var arr = new ifArray();

alert( arr.constructor == Array );  //false
alert( arr instanceof Array );  //false
alert( Object.prototype.toString.call(arr) == '[object Array]' );  //true

5.isPrototypeOf()
用来判断某个原型和某个实例之间的关系。

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }
    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };
    var p1 = new CreatePerson('小明');
    alert( CreatePerson.prototype.isPrototypeOf(p1) ); //true
</script>

6.in运算符
in运算符可以用来判断,某个实例是否含有某个属性,不管是不是本地属性。

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }

    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };

    var p1 = new CreatePerson('小明');

    alert( "name" in p1 ); //true
    alert( "type" in p1 ); //true

</script>

in运算符还可以用来遍历某个对象的属性(除constructor)和方法。

<script type="text/javascript">
    function CreatePerson(name){
        this.name = name;
    }

    CreatePerson.prototype.type="men";
    CreatePerson.prototype.showName = function(){
        alert( this.name );
    };

    var p1 = new CreatePerson('小明');

    for (var prop in p1) {
        alert( 'p1['+ prop +']='+p1[prop] );
    }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值