国强极客
有问题请加微信:guoqiang7585
国强极客

javascript Object 函数继承

javascript Object  函数继承

三、Object

1、介绍

Object也是JS内置的一个构造函数,它的实例通常被认为是所有其他对象的原型对象。实际上Object函数也有原型对象,这个Object的原型对象才是最顶层的一个对象。总之,根据原型链的关系,Object构造函数内提供的一些方法,以及Object函数的原型对象中的方法,都会为每个实例对象所拥有。

Obejct函数中自带的一些成员:

Object的原型对象的成员:

2、hasOwnProperty(property)

hasOwnProperty方法是Object函数的原型对象上的方法。
hasOwnProperty方法用于检测实例对象是否有非继承的属性,也就是自身有该属性。

3、create()

create()方法是Obejct构造函数内的成员方法,而且是一个静态方法(调用方式是直接使用Object来调用)。
create()方法用于创建对象,创建对象的时候,可以指定对象的原型对象。
或者另外的写法:

4、小结

四、继承

JS要实现继承,有非常多的方式,除了下面列举的三种以外,还有for…in可以实现继承。ES6中有extends关键字,可以实现继承。

1、冒充继承

案例中定义两个构造函数(类),父类中定义几个成员,然后让子类的实例去调用。如果调用成功,表示实现了继承。
父类.call(子类的对象, 其他参数); //意思是让子类的对象,去代替父类中的this。
这种实现继承的方式,是不能继承原型对象上的成员的:

2、原型链继承

3、create()继承

create()是IE9才开始支持的。
var 新对象 = Object.create(原型对象); 该方法就是用于指定原型对象的。所以就可以直接使用create方法实现继承。

五、this指向总结

this永远指向一个对象。
this指向的对象是谁,关键要看this运行的环境。也就是this所在的函数被赋值给哪个对象了,那么this就表示这个对象
全局环境下,this表示window对象

1、事件处理函数中的this

HTML:
JS:

<table border="1" width="200" >
    <tr>
        <td>&nbsp;</td>
    </tr>
</table>

<script>
    //点击td,创建input放到td中
    //在input中输入内容,当按回车的时候,将输入的内容放到td中
    document.getElementsByTagName('td')[0].onclick = function () {
        //console.log(this); // this就是绑定事件的那个对象,本例中就是td
        var td = this; //先保存this为变量,这里的this还表示td
        var input = document.createElement('input');
        td.innerHTML = '';
        td.appendChild(input);
        input.focus();

        input.onkeyup = function (evt) {
            //console.log(this); // this 表示input
            var e = window.event||evt;
            var keyCode = e.keyCode;
            if(keyCode == 13){
                td.innerHTML = this.value;
            }
        }
    };

2、面向对象中的this

>
区分this表示哪个对象,关键看调用函数的时候,函数是由谁来调用的。由o1调用,this就表示o1,由o2调用,this表示o2.

3、定时器中的this


setTimeout();   //一段时间后,执行一次
    setInterval();  //间隔一段时间,执行一次

   setTimeout('console.log(123);', 1000);
setTimeout('alert(123);', 1000);
   function a(){
        console.log(456);
    }
    //第一个参数是字符串,代码运行到这行是不会解析这个字符串的,在1秒后,要执行的时候才会解析前面的字符串
    setTimeout('a()', 1000); 
  function a(){
        console.log(789);
    }
    //第一个参数是变量的表示,代码运行到这行就会解析变量的意思。当然执行还是在1秒后
    setTimeout(a, 1000);

    var x = 1;
    var o = {
        x:2,
        say:function () {
            console.log(this.x);
        }
    };

  function m(){
        console.log(this.x);
    }
    setTimeout(o.say, 1000); // 1
  setTimeout(function(){
        console.log(this.x);
    }, 1000);
    setTimeout('o.say()', 1000); // 2 ,这种方式,say内部的this没有发生改变
    //....
    //....
    //....
    //o.say();
赞赏
对内容有疑问,请加我微信:guoqiang7585

国强极客

文章作者

博客站长,有问题请加微信【guoqiang7585】。

国强极客

javascript Object 函数继承
三、Object 1、介绍 Object也是JS内置的一个构造函数,它的实例通常被认为是所有其他对象的原型对象。实际上Object函数也有原型对象,这个Object的原型对象才是最顶层的一个对象。总之,…
扫描二维码继续阅读
2019-12-13