使用 Kendo UI 库实现对象的继承

javaScript 也是一种面向对象的开发语言,但和 C++,Java,C# 所不同的是,它的对象不是基于类(Class),而是基于对象原型(ProtoType),因此对于来自 C++,Java 等背景的程序员,初次接触到 JavaScript 的面向对象的开发时,开始会有些不适应。而 JavaScript 语言本身也非常灵活,实现面向对象的方法也很多,不同的框架使用的方法也不同。

对于 JavaScript 的面向对象的方法和 C++,Java 面向对象的不同点,举个简单的类比,使用 C++,Java 来建房,是先有蓝图(Class),然后根据这个蓝图(Class)来建房(对象)。而 JavaScript 是直接建个房(Object),如果要将个新房,就参考这个建好的房作为原型(prototype),然后复制一个对象。

Kendo UI 不仅仅提供了一些好看的UI组件,而且也提供一个 JavaScript 构建对象,实现继承的方法,其形式接近于 C++,Java 的类继承方法。

使用 kendo.Class.extend 创建对象

首先可以创建一个新对象(注意 JavaScript 中没有类的概念),可以通过kendo.Class.extend 来定义。

var person = kendo.Class.extend({});

上面代码创建一个 Person 对象,但没有定义 Person 对象任何属性和方法。下面可以为 Person 定义一些属性和方法(函数),可以通过对象字面量的方法来定义,Javascript 对象的属性或方法都是以 Key:value 的形式来定义。也使用 this 来引用对象的方法或属性。

var Person = kendo.Class.extend({
firstName: 'Not Set',
lastName: 'Not Set',
isAPrettyCoolPerson: false,
sayHello: function() {
alert("Hello! I'm " + this.firstName + " " + this.lastName);
}
});
var person = new Person();
person.sayHello();

创建构造函数

也可以为对象添加一个构造函数,Kendo UI 使用 init 来定义构造函数 ,这样在创建新对象时,可以通过构造函数来创建新的对象. 下面代码重新定义 Person 对象,并为其添加一个属性 isAPrettyCoolPerson ,我们使用这个对象,创建一个名为 John ,Bristowe 的Person,并把它的  isAPrettyCoolPerson 属性设为 True 。

var Person = kendo.Class.extend({
firstName: 'Not Set',
lastName: 'Not Set',
isAPrettyCoolPerson: false,
init: function (firstName, lastName) {
if (firstName) this.firstName = firstName;
if (lastName) this.lastName = lastName;
}, sayHello: function () {
alert("Hello! I'm " + this.firstName + " " + this.lastName);
} });
var person = new Person("John", "Bristowe");
person.isAPrettyCoolPerson = true;
person.sayHello();

创建一个派生对象

现在我们可以创建 Person 对象的一个派生对象 Parent,Parent 对象继承 Person 对象 ,然后我们创建一个 Dad 对象。

var person = new Person("John", "Bristowe");
person.isAPrettyCoolPerson = true;
var Parent = Person.extend({
firstName: 'Mark',
lastName: 'Holland'
});
var myDad = new Parent();
myDad.isAPrettyCoolPerson = true;
myDad.sayHello();
alert(myDad.isAPrettyCoolPerson);

我们再创建一个 Child 对象,继承自 Parent,要注意的是 isCoolPerson 属性。想想它的值是真还是假呢?

var Child = Parent.extend({});
var me = new Child();
me.firstName = "Burke";
me.sayHello();
alert(me.isAPrettyCoolPerson);

可以看到 me 的 isAPrettyCoolPerson 的值为 false, 没有因为 myDad 的  isAPrettyCoolPerson 为 True 而变为 true, 这些因为 Child 继承自 Parent ,Parent 缺省的 isAPrettyCoolPerson 为 false, myDad 修改的只是某个特定的实例的值,没有修改作为原型的对象(Parent)的属性。

使用 Kendo UI 库实现对象的继承的更多相关文章

  1. [置顶] Kendo UI开发教程: Kendo UI 示例及总结

    前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...

  2. Kendo UI for jQuery使用教程——创建自定义捆绑包

    [Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support ...

  3. Kendo UI for jQuery使用教程:操作系统/jQuery支持等

    [Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support ...

  4. kendo ui 好用的小部件--grid

    Kendo Ui Grid控件,继承至Widget. https://demos.telerik.com/kendo-ui/grid/index  快速上手教程  下面的代码来自本教程 做表格时非常方 ...

  5. Web UI开发推荐!Kendo UI for jQuery自定义小部件——使用MVVM

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...

  6. Web UI开发推荐!Kendo UI for jQuery自定义小部件——处理事件

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...

  7. Kendo UI for jQuery自定义小部件第一弹!不得不看的入门指南

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...

  8. 微信小程序开发04-打造自己的UI库

    前言 github地址:https://github.com/yexiaochai/wxdemo 接上文继续,我们前面学习了小程序的生命周期.小程序的标签.小程序的样式,后面我们写了一个简单的load ...

  9. Kendo UI 单页面应用(四) Layout

    Kendo UI 单页面应用(四) Layout Layout 继承自 View,可以用来包含其它的 View 或是 Layout.下面例子使用 Layout 来显示一个 View <div i ...

随机推荐

  1. loj 6089 小 Y 的背包计数问题——分类进行的背包

    题目:https://loj.ac/problem/6089 直接多重背包,加上分剩余类的前缀和还是n^2的. 但可发现当体积>sqrt(n)时,个数的限制形同虚设,且最多有sqrt(n)个物品 ...

  2. DataGrid 滚动特定的行或者列

    DataGrid 滚动特定的行或者列. DataGrid.ScrollIntoView Method (Object, DataGridColumn) .NET Framework 4.5 Silve ...

  3. POJ3259(ford判环)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 39078   Accepted: 14369 Descr ...

  4. 如何分析一个QT类

    作者:gnuhpc  出处:http://www.cnblogs.com/gnuhpc/ 我们以QLineEdit这个类为例来看看如何学习分析一个QT类. 1.Public Types: 这是一个在这 ...

  5. [xdoj1233]Glory and LCS

    题意:求两个排列的最长公共子序列n<=1e5 解题关键:转化为LIS. 最长公共子序列 的 nlogn 的算法本质是 将该问题转化成 最长增序列(LIS),因为 LIS 可以用nlogn实现,所 ...

  6. 托管C++——在C#中使用C++

    下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用. 现有一个Detector类需要使用,首先,要创建一个托管C++的DLL工程DAADll,然后在里面添加下面的代码: ...

  7. ubuntu 14.04 部署Django项目

    一.购买服务器 推荐 vultr的服务器,还可以_ _ _,链接:传送门 操作系统建议选 ubuntu 14.04 64位 二.购买域名 链接:传送门 三.安装相关软件 # 创建一个叫mu的用户 ro ...

  8. vmware中centos6.5无法启动拷贝出里面的资料的方法

    先说一下我的环境:windows7-x64位机器下安装的vmware虚拟机,里面安装的是centos6.5-x64位的系统. 系统崩溃的原因:从cenos拖拽一个文件到win7下,结果就卡死了.整个系 ...

  9. 在多台手机上批量安装apk

    1.手机要打开adb调试 2.该程序可以实现台android手机的多个apk批量安装 1.getSeriaoNum.py模块,该模块获取已连接手机的序列号 import os import threa ...

  10. CodeForces - 633D Fibonacci-ish 大数标记map+pair的使用

    Fibonacci-ish Yash has recently learnt about the Fibonacci sequence and is very excited about it. He ...