标签:blog io ar 使用 java on 2014 log cti
本文记录一种JavaScript的对象定义和继承的书写方式,也是目前使用比较普遍的一种。 1、定义对象(混合的构造函数和原型方式) // 属性在构造函数里定义 function Person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; } // 方法在原型里定义 Person.prototype.hello = function() { alert("Hello, my name is " + this.name); } Person.prototype.say = function(str) { alert("This is " + str); } // 实例 var p = new Person("Jim", 23, "M"); p.hello(); p.say("Car"); 2、继承的实现 // 定义子类属性 function Student(name, age, sex, score) { Person.call(this, name, age, sex); // (1) 可看作构造函数,对继承的父类属性并初始化 this.score = score; } // 定义子类方法 Student.prototype = new Person(); // (2) 通过对子类的prototype进行一个父类无参构造函数的赋值,来继承父类的属性和方法,但继承的属性值都为空,需通过(1)进行初始化 Student.prototype.sayScore = function() { alert("My score is " + this.score); } 注: a、子类在进行继承父类时,上面的(1)和(2)两步都是必须的。 b、若子类定义了一个跟父类同名的方法,则无论子类的同名方法参数是否与父类一样,都会覆盖父类的同名方法,子类对象调用时调的是子类的方法。 c、通过prototype定义方法时,需通过" Object.prototype.methodName = function() {...} "的方式,否则子类无法直接通过方法名调用父类方法。 // 实例 var s = new Student("Andy", 22, "F", 100); s.hello(); s.say("Book"); s.sayScore();
标签:blog io ar 使用 java on 2014 log cti
原文地址:http://blog.csdn.net/yanhang0610/article/details/41662343