JavaScript利用构造函数和原型的方式模拟C#类的功能
//构造函数
function person(name, age) {
this.name = name;
this.age = age;
}
//定义person原型,原型里的属性可以被自定义对象引用
person.prototype = {
getName: function () {
return this.name;
},
getAge: function () {
return this.age;
}
}
这就需要引入另外一个概念 - 原型(prototype),我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉好像是拷贝)。
JavaScript通过构造函数和原型的方式模拟实现了类的功能。
window.onload = function () {
person.prototype.sex = '男';
var fmj =new person('kkk', 22);
alert('第一次输出:'+fmj.sex);
fmj.sex = '保密';
alert('第二次输出:' + fmj.sex);
delete fmj.sex;
alert('第三次输出:' + fmj.sex);
//在debug的控制台输出结果.
//console.log(fmj.getAge());
}
相关推荐
-
C# 静态构造函数使用总结
•静态构造函数既没有访问修饰符,也没有参数. •如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数. •在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了. •如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行. •如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运
-
C#中派生类调用基类构造函数用法分析
本文实例讲述了C#中派生类调用基类构造函数用法.分享给大家供大家参考.具体分析如下: 这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数 1.当基类中没有自己编写构造函数时,派生类默认的调用基类的默认构造函数 例如: public class MyBaseClass { } public class MyDerivedClass : MyBaseClass { public MyDerivedClass() { Console.WriteLine("我是子类无参构造函数&qu
-
C#私有构造函数使用示例
声明空构造函数可阻止自动生成默认构造函数.注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数.但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化. 示例代码: 复制代码 代码如下: public class PrivateConClass{private static PrivateConClass pcc; private PrivateConClass(){Console.WriteLine("This private constructure f
-
C#静态构造函数用法实例分析
本文实例讲述了C#静态构造函数用法.分享给大家供大家参考.具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了.这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用. 现在碰到这样一个场景:提供一个静态方法,这个静态方法在不同的地方使用,涉及到一个参数值不同,而其他内容都完全一致.如果是将静态方法的内容复制出来做成另外一个方法,代码冗余太多,做法不可取.使用静态构造函数处理静态变量,则可以尽最大程
-
C#使用this关键字实现串联构造函数调用方法
本文实例讲述了C#使用this关键字实现串联构造函数调用方法.分享给大家供大家参考.具体分析如下: 在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分封装成一个方法,但还有一种更为合理简单的方法,下面就通过this关键字来实现串联构造函数做一简单示例. 示例代码如下: 复制代码 代码如下: public class Person {
-
c#只读字段和常量的区别,以及静态构造函数的使用实例
复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{ /// <summary> /// 作者:it小金 /// 功能:c#只读字段和常量的区别,以及静态构造函数的使用 /// </summary> class Program { stat
-
C#中静态构造函数的几点说明介绍
静态构造函数是C#的一个新特性,其实好像很少用到.不过当我们想初始化一些静态变量的时候就需要用到它了.这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次.也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用. 复制代码 代码如下: class SimpleClass{// Static constructorstatic SimpleClass(){//}} 在使用静态构造函数的时候应该注意几点: 1.静态构造函数既没有访问修饰符,也没有参数.因为是.NE
-
解析C#中的私有构造函数和静态构造函数
私有构造函数 私有构造函数是一种特殊的实例构造函数.它通常用在只包含静态成员的类中.如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例.例如: class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... } 声明空构造函数可阻止自动生成默认构造函数.注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有
-
C#中私有构造函数的特点和用途实例解析
本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数.相信对于大家更好的理解C#中的私有构造函数有一定的促进作用.具体如下: 一.带私有构造函数的类不能被继承 在Animal类中声明一个私有构造函数,让Dog类来继承Animal类. public class Animal { private Animal() { Console.WriteLine("i am animal"); } } public class Dog : Animal { } 运行程序,生成解决方
-
JavaScript利用构造函数和原型的方式模拟C#类的功能
复制代码 代码如下: //构造函数 function person(name, age) { this.name = name; this.age = age; } //定义person原型,原型里的属性可以被自定义对象引用 person.prototype = { getName: function () { return this.
-
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
上一篇文中完成的封装,还存在一个小问题,就是该轮播对象不能在同一页面中重复使用,本文将通过组合使用javascript的构造函数和原型模式创建对象来解决这个问题. 没有看过上一篇文章的朋友可以点此查看上一篇文章 (jQuery图片轮播实现并封装(一)) 首先回顾一下,上文的问题所在,上文中的carsouel对象是采用字面量的方式来定义的,这样carsouel本就是一个实例,想要使用在多处时,这个对象的方法会发生冲突,最终只会执行最后的那一个.而通过采用构造函数的方式来定义对象carsouel,每
-
JavaScript中构造函数与原型链之间的关系详解
在Javascript中不存在class的概念,它的class概念是通过构造函数(constructor)与原型链(prototype)来实现. 1.构造函数(constructor):创建对象时的初始化对象,总是与new 关键是一同出现. 构造函数存在以下特点: 1.构造函数内的this 指向当前实例对象. 2.使用new 关键字实例化当前对象. 3.构造函数首字母大写,区分普通函数. 4.实例对象都可以继承构造函数中的属性和方法.但是,同一个对象实例之间,无法共享属性. 2.原型(proto
-
javascript 混合的构造函数和原型方式,动态原型方式
我们日常JS编程中最常用的方式 有下面2种: 1.混合的构造函数和原型方式 (重点) 复制代码 代码如下: function car (sColor,iNumbers){ // 构造函数只用来定义对象的所有非函数属性,即对象的属性 this.color = sColor; this.numbers = iNumbers; this.dirvers = new Array ("Jone","Leon"); } car.prototype.showColor = fun
-
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
本文实例讲述了JavaScript 面向对象程序设计.分享给大家供大家参考,具体如下: 类的创建于实例对象 工厂模型创建对象 function CreatePerson ( name,sex,age ) { var obj = new Object(); obj.name = name; obj.sex = sex; obj.age = age; obj.sayName = function () { console.log( this.name ); } return obj; } var p
-
深入理解javascript构造函数和原型对象
常用的几种对象创建模式 使用new关键字创建 最基础的对象创建方式,无非就是和其他多数语言一样说的一样:没对象,你new一个呀! var gf = new Object(); gf.name = "tangwei"; gf.bar = "c++"; gf.sayWhat = function() { console.log(this.name + "said:love you forever"); } 使用字面量创建 这样似乎妥妥的了,但是宅寂的
-
JavaScript构造函数与原型之间的联系
目录 一.构造函数和原型 1.构造函数 2.构造函数的问题 3.构造函数原型 prototype 4.对象原型 __proto__ 5.constructor 构造函数 6.构造函数.实例.原型对象三者之间的关系 7.JavaScript 的成员查找机制(规则) 8. 扩展内置对象 二.类的本质 一.构造函数和原型 1.构造函数 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用.我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面.
-
javascript构造函数以及原型对象的理解
以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的. //定义一个构造函数 function People(name,age){ this.name=name; this.age=age; this.dothings=function(){ retrun this.name+this.age; } } var people1 = new People("panda1",25); var people2 = new People("pan
-
利用JavaScript模拟京东按键输入功能
在看到这个功能的时候我也很惊讶,京东竟然做了这样的一个功能.在京东商城网页版,无论你在什么位置,只需要按下S键,就可以将光标定位到搜索栏进行搜索.虽然说这是一个很不错的功能,但是貌似没有几个人知道. 程序实现很简单,在s键上升的时候搜索框获得焦点就可以了. <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name=&q
-
javascript的构造函数, 原型,原型链和new你了解多少
目录 1.什么是构造函数? 2.如何通过构造函数创建一个对象? 3.new一个对象的过程发生了什么? 4.什么是原型? 5.原型.构造函数.实例的关系? 6.什么是原型链? 7.类? 总结 1.什么是构造函数? 如果一个函数被设计出来,是用于通过new关键字创建对象的,它就是一个构造函数. 如下: function Father(name,age){this.name = name;this.age = age;}function Father(name,age){ this.name = na
随机推荐
- SQL Server 2012 安装与启动图文教程
- Windows 2003组策略和安全模板的应用
- vbs解决处理TXT文本数据相关问题实现代码
- VBS教程:方法-Remove 方法
- 通过yum升级CentOS/RHEL最小化安装的方法
- 深入理解Swift中的变量与常量
- javascript history对象(历史记录)使用方法(实现浏览器前进后退)
- javascript 正则表达式触发函数进行高级替换
- javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
- asp编程中常用的javascript辅助代码第1/2页
- Powershell中获取所有磁盘盘符的方法
- 使用SQL Server 获取插入记录后的ID(自动编号)
- Last_Errno: 1062,Last_Error: Error Duplicate entry
- js弹出的对话窗口永远保持居中显示
- Mybatis查不到数据查询返回Null问题
- Android HTTP网络请求的异步实现
- 使用python为mysql实现restful接口
- SpringBoot集成gRPC微服务工程搭建实践的方法
- JavaScript数组去重的几种方法
- Python3 执行系统命令并获取实时回显功能