• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > js面向对象之封装(构造函数)

js面向对象之封装(构造函数)

作者:待归魔帝的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-21

待归魔帝的博客通过本文主要向大家介绍了面向对象,函数,javascript等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

什么是“构造函数”? 构造函数其实就是一个普通的函数,但是在这个函数体中使用了 "this" 这个变量。我们向构造函数使用 new 运算符,就能生成实例化对象,并且这个 this 变量会绑定在这个new出来的实例化对象上。
关键: 1、函数中的 "this" 指向的是实力化的对象。 2、实例化的对象是我们在构造函数的基础上使用 new 运算符生成的。
例如: //定义一个构造函数 function myfile(name,work){ this.name = name; this.work = work; this.type = "person"; this.sex = function(){alert("nan")}; } var myfile1 = new myfile("zhang","IT"); //new 一个实例化对像。 alert(myfile1.name); //zhang alert(myfile1.type); //person myfile1.sex(); //nan 总结:this指向的new出来的实例化对象。 上面的实例中有一个问题,就是 this.type = "person" this.sex = function(){alert("nan")};这两个的值是写死在构造函数中的,不够灵活,如果我们想要重复调用,这时this.type与this.sex的局限性就会很大。 解决方法: 我们可以使用:prototype 原型模式
Prototype 模式 在javascript中,每一个构造函数都有一个 prototype属性,指向另一个对象。被指向的这个对象的所有属性和方法,都会被构造函数的实例化对象所继承。
所以我们可以用 Prototype 模式来解决上面的不灵活问题,即部分不变的属性和方法我们可以定义在prototype对象上。 例如: //创建构造函数 function myfile(name,work){ this.name = name; this.work = work; } myfile.prototype.type = "person"; //在prototype对象上来定义不变属性 type myfile.prototype.sex = function(){alert("nan")}; //在prototype对象上来定义不变属性 sex var myfile1 = new myfile("zhang","IT"); //new 一个实例化的对象 alert(myfile1.type); //person myfile1.sex(); //nan
<!--简单的封装实例--> <button class="btn">按钮1</button> <button class="btn">按钮2</button> <button class="btn">按钮3</button> <button class="btn">按钮4</button> <button class="btn">按钮5</button> var aBtn = document.getElementsByTagName("button"); function myBtn(type){ type = function(){ for (var i=0;i<type.length;i++){ onclick = function(){ var myfile1 = new myBtn(aBtn);
Prototype模式的验证方法 1、isPrototypeOf()用于判断某个原型对象 即 proptotype 对象和某个实例之间的关系。 例如: function myfile(name,work){ this.name = name; this.work = work; } myfile.prototype.type = "person"; myfile.prototype.work = function(){alert("IT");} var myfile1 = new myfile("zhang","IT"); alert(myfile.prototype.isPrototypeOf(myfile1)); //true
2、每一个实例化对象都有一个hasOwnProperty()方法。 object 具有指定名称的属性,那么 hasOwnProperty 方法返回 true;反之则返回 false。此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。 function myfile(name,work){ this.name = name; this.work = work; } myfile.prototype.type = "person"; myfile.prototype.work = function(){alert("IT");} var myfile1 = new myfile("zhang","IT"); alert(myfile1.hasOwnProperty("type")); //false alert(myfile1.hasOwnProperty("name")); //true 注意:hasOwnProperty()方法必须是对象本身的一个成员,无法检查出该对象原型链中的属性,如上例所示,alert(myfile1.hasOwnProperty("type")); 返回的是false因为type是使用原型链prototype添加的属性,而alert(myfile1.hasOwnProperty("name"));返回的是true,因为name是对象本身的属性。
3、in运算符 1、可以用来判断一个实例化对象中是否含有某个属性,无论是不是本地的。 2、用for.....in来遍历某个实例化对象的所有属性。
function myfile(name,work){ alert("work" in myfile1); //使用in来判断work里是不是有name这个属性: for (var a in myfile1){ //使用in来循环myfile1里的所有属性:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • javascript 判断一个对象为数组的方法
  • js中的面向对象入门
  • JS对象创建的几种方式整理
  • javascript 面向对象function详解及实例代码
  • JS使用面向对象技术实现的tab选项卡效果示例
  • 微信小程序 两种为对象属性赋值的方式详解
  • JavaScript中创建对象的7种模式详解
  • JS获得一个对象的所有属性和方法实例
  • js面向对象编程总结
  • js 原型对象和原型链理解

相关文章

  • 2017-08-14javascrip学习总结
  • 2017-05-11基于JavaScript实现轮播图原理及示例
  • 2017-08-31js限制Input输入框输入最小最大字符数
  • 2017-05-11JS高仿抛物线加入购物车特效实现代码
  • 2017-05-11jquery实现的table排序功能示例
  • 2017-05-11JavaScript中的this陷阱的最全收集并整理(没有之一)
  • 2017-05-11JavaScript中三种常见的排序方法
  • 2017-05-11解决ajax不能访问本地文件问题(利用js跨域原理)
  • 2017-05-11jquery实现刷新随机变化样式特效(tag标签样式)
  • 2017-05-11Bootstrap3 多个模态对话框无法显示的解决方案

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信小程序 利用css实现遮罩效果实例详解
    • Vue.js基础学习之class与样式绑定
    • JavaScript错误处理和堆栈追踪详解
    • react实现pure render时bind(this)隐患需注意!
    • javascript基础练习之翻转字符串与回文
    • JS基于onclick事件实现单个按钮的编辑与保存功能示例
    • vue组件实例解析
    • 聊聊JavaScript如何实现继承及特点
    • JavaScript数据结构之二叉树的查找算法示例
    • js中编码函数:escape,encodeURI与encodeURIComponent详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有