javascript
javascript面象对象编程的三种方法
?<script>
??? /*
???? *?第一種,函數(shù)即類,利用prototype來模擬對象的方法,簡單 ,不包括繼承
???? */
??????? //------------------------------------------------------
??????? var myclass = function () {
??????????? this.initialize.apply(this, arguments);
????????? }
??????? myclass.prototype = {
??????????? initialize: function (a, b) {
??????????????? this.id = a;
??????????????? this.name = b;
??????????? },
??????????? speak: function () { alert(this.name); }
??????? };
??????? var user = new myclass(1, 'yandavid')
??????? user.speak();
??????? //------------------------------------------------------
??????? /*
???????? *?第二三種,實現(xiàn)了簡單的繼承關系,只不過第二種用的是擴展Object的方法,第三種用的是prototype,其實都是
???????? 對原型的擴展,呵呵
???????? */
??????? //------------------------------------------------------
??????? var Class = {
??????????? create: function () {
??????????????? return function () {//實際上把所有的屬性定義到intiliaze方法(實際上是一個類)中,???
??????????????????? this.initialize.apply(this, arguments); //然后通過對象冒充方式繼承該類???
??????????????? }
??????????? }
??????? }
??????? /*
??????? 建立空類
??????? 先實例化超類,再把超類中的方法復制到子類中去,注意,實際上prototype類定義機制中并沒有直接定義
??????? 類的屬性是通過intilize方法,而且所有的方法都直接定義在prototype中,所以直接用原型鏈方式
??????? */
??????? Object.extend = function (destination, source) {
??????????? for (property in source) {
??????????????? destination[property] = source[property];
??????????? }
??????????? return destination;
?????????? }
??????? var Pirate = Class.create();
??????? Object.extend(Pirate.prototype, {
??????????? initialize: function (name) { this.name = name; },
??????????? speak: function (message) { return this.name + ':' + message + ', yarr!'; }
??????? }
);
??????? var a = new Pirate("sss");
??????? alert(a.speak("Pirate"));
??????? //------------------------------------------------------
??????? var Person = Class.create();
??????? Person.prototype = {/*把方法定義到prototype中,注意,是通過initalize方法初始化類的屬性 */
??????????? initialize: function (name) {
??????????????? alert(arguments.caller);
??????????????? this.name = name;
??????????? },
??????????? say: function (message) {
??????????????? return this.name + ': ' + message;
??????????? }
??????? };
??????? var guy = new Person('Miro');
??????? alert(guy.say('hi'));
??????? //------------------------------------------------------
??? </script>
總結
以上是生活随笔為你收集整理的javascript面象对象编程的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中申请内存的正确方法
- 下一篇: 马上就要到了的即时通讯