【javascript基础篇】——面向对象动态加载属性和方法
来源:互联网 发布:火狐视频下载php 编辑:程序博客网 时间:2024/06/06 01:11
【前言】
其实在总结javascript的原型模式的块的时候,我不是非常清楚用来做什么,再一次的回顾的时候感觉有了一点深的印象,个人觉得在javascript的面向对象已经继承的过程我们肯定会免不了使用它的,下面介绍一下非常基本的使用方式!
【内容】
1.动态添加属性
①.实例化对象之后动态添加
function Person(name,age){ this.name=name; this.age=age;}var p1 = new Person('张三', '20');p1.sex='男';alert(p1.name+":"+p1.age+" ,"+p1.sex)
②.使用原型模型动态添加
function Person(name,age){ this.name=name; this.age=age;}var p1 = new Person('张三', '20');//使用原型模型添加属性Person.prototype.sex='男'; //也可以换成:p1.constructor.prototype.sex='男'alert(p1.name+":"+p1.age+" ,"+p1.sex)
2.动态添加方法
①使用实例化对象动态添加
function Person(name,age){ this.name=name; this.age = age; this.setname= function () { return 'helloWorld'; }}var p1 = new Person('张三', '20');//关键的地方在于这里:p1使用的是隐藏的_proto_属性。p1.setname = function () {return "how are you" }alert(p1.name + ":" + p1.age +", "+ p1.setname());
②使用原型模式创建
function Person(name,age){ this.name=name; this.age = age; this.setname= function () { return 'helloWorld'; }}var p1 = new Person('张三', '20');//关键的地方在于这里:prototype的使用需要用构造器函数对象Person.prototype.setname = function () {return "how are you" } alert(p1.name + ":" + p1.age +", "+ p1.setname());
其中两种的方式的区别主要是由于_proto_和prototype,其中_proto_是一种隐藏的实例化对象属性,prototype是函数对象属性,其中也可以存放对象。
prototype和_proto_区别:
prototype是某一个构造器函数的属性,而_proto_是某一个实例对象的属性。
比如在代码:
alert(typeof p1._proto_);返回结果是object,但是必须在ECM5中,在一些浏览器中不适用。alert(typeof p1.constructor.prototype);返回的结果的是objec。alert(typeof p1.prototype);返回的结果是undefinedalert(typeof p1.constructor._proto_);返回的结果是undefined
3.注意事项
在prototype的使用过程中发现其实在动态添加这些东西的时候,在重写某一个对象的prototype的时候,需要重置相应的constructor属性。如下:
Person.prototype.constructor=Person,否则可能会出现意向不到的结果。
【总结】
其实这都是一些接触语法之类的东西,希望对你学习javascript语言有帮助!本篇还推荐我关于javascript的基础的相关文章如下:
1.【javascript基础篇】——简单对象和面向对象
2.【Javascript基础篇】—--原型对象(prototype)的三个常用方法
3.【JavaScript】——面向对象之原型优化
1 0
- 【javascript基础篇】——面向对象动态加载属性和方法
- javascript 面向对象基础(三)面向对象的常用属性和方法
- javascript面向对象 属性和方法
- 【C#】面向对象基础—属性、方法、结构
- JavaScript面向对象之类方法和类属性的定义
- JavaScript面向对象程序设计——属性
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- javascript面向对象——面向对象基础
- JavaScript面向对象:类、方法、属性
- javascript面向对象基础——作用域、闭包、模拟私有属性
- javascript面向对象——prototype属性(原型属性)
- Javascript面向对象编程(1)-理解对象和基本属性和方法
- javascript面向对象学习笔记(四)——常用方法/属性
- javascript面向对象(对象的创建以及属性和方法的添加)
- C++中的线程函数如何访问类中的成员变量
- ios UITableview 刷新某一个cell 或 section
- linux内核中Makefile的使用
- Centos建立私有yum源
- C++中Cbitmap,HBitmap,Bitmap的区别及联系
- 【javascript基础篇】——面向对象动态加载属性和方法
- TaskExecutor
- Spring框架(五)AOP之注解方式
- DispatchMessage
- Android 状态栏设置
- 嵌入式数据库(十三)
- Windows Service 程序的注意事项
- opencv 计算程序运行时间
- NOIP2011 提高组 复赛 day1 mayan mayan游戏