zoukankan      html  css  js  c++  java
  • Javascript[obj&prototype&class] 实践学习1

    1、函数(构造函数)

    var p = new Person('Herry', '22');
    alert(p.age);
    function Person(name, age) {
       this.name = name;
       this.age = age;
    }
    这时我们就有了一个 function,而且这个 function 会有一个 prototype 的属性, 通过这个属性可以访问该函数的原型,
    从图中可以看出,其实不仅仅是可以通过 Person.prototype 访问原型,原型中也有一个 constructor 的属性,Person.prototype.constructor 就指向 Person 函数自身。

     

    创建实例:
    1 var p1 = new Person("Jack", 20);
    2 var p2 = new Person("Peter", 22);
    3 alert(p2.name); // Peter
    4 alert(p2.constructor); // 函数自身
    5 alert(Person.prototype.constructor); // 函数自身
    当创建了实例 p1 和 p2 之后,p1, p2 内都存在内部属性 [ [ Prototype ] ],
    而这个属性,其实就指向构造函数 Person 的原型,有趣的是 p1 和 p2 和构造函数 Person 本身没有直接的关系, 它们的联系就是它们都指向了同一个原型

     

    每当读取对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性,
    搜索首先从对象实例本身开始,如果在实例中找到了具有给定名字的属性,则返回该属性的值,
    如果没有找到,则继续搜索该实例的原型,在原型对象中查找具有给定名字的属性
    Person.prototype.sayHi = function() {
       document.write("<div>Hi</div><hr>");
    }
    var say = new Person(); 
    say.sayHi(); // Hi
    原型肯定是一个object;
    原型的构造函数,指向函数本身,输出其本身的构造代码;
  • 相关阅读:
    利用同步辅助类CountDownLatch计算多线程的运行时间
    i++的原子性问题
    Volatile关键字以及线程的内存可见性问题
    创建线程的第三种方式以及简单使用
    java8新特性-lambda表达式和stream API的简单使用
    springboot整合activemq
    springboot整合redis单机及集群
    JAVA-基础(一)
    CentOS-文件操作
    理解AngularJS的作用域Scope
  • 原文地址:https://www.cnblogs.com/smallgo/p/3110273.html
Copyright © 2011-2022 走看看