js对象学习
1. 属性类型
数据属性
①Configurable 表示能否通过delete删除属性,默认值true
②Enumerable 表示能否通过for-in循环访问属性,默认值true
③Writable 表示能否修改属性的值,默认值true
④Value 包含这个属性的默认值,默认值Undefined.
- var person = {};
- Object.defineProperty(person, 'name', {
- configurable: false,
- value: 'Nicholas'
- }
- );
- alert(person.name);
- delete person.name;
- alert(person.name);
访问器属性
①set 在写入属性时调用的函数
②get 在读取属性时调用的函数
- var book = {
- _year: 2004,
- edition: 1
- };
- Object.defineProperty(book,'year',{
- get: function(){
- return this._year;
- },
- set: function(newValue){
- if(newValue > 2004){
- this._year = newValue;
- this.edition += newValue - 2004;
- }
- }
- });
- book.year = 2005;
- alert(book.edition); //2
2. 创建对象
①构造函数当做函数用
- function Person(name,age,job){
- this.name = name;
- this.age = age;
- this.job = job;
- this.sayName = function(){
- alert(this.name);
- }
- }
- // 构造函数
- var person = new Person('Nicholas', 29, 'software Engineer');
- person.sayName();
- // 作为普通函数
- Person('Greg', 27, 'Dector'); //添加到了window(在全局作用域中调用一个函数,this对象总是指向浏览器中的window对象)
- window.sayName();
- // 作为另一个对象作用域调用
- var o = new Object();
- Person.call(o,'Kristen', 25, 'Nurse'); //可以使用call()或者apply() 在某个特殊对象的作用域中调用Person()函数,这里在对象o的作用域调用的,因此调用后o就拥有了所有的属性和sayName()方法。
- o.sayName();
②把函数变成全局变量,添加到对象里面
- function sayName(){
- alert(this.name);
- };
- function Person(name,age,job){
- this.name = name;
- this.age = age;
- this.job = job;
- this.sayName = sayName; //直接指向全局的sayName方法
- }
- var person1 = new Person('Nicholas', 29, 'software');
- person1.sayName();
3. 原型模式
①使用
- function Person(){
- }
- Person.prototype.name = 'Nicholas';
- Person.prototype.age = 29;
- Person.prototype.job = 'software';
- Person.prototype.sayName = function(){
- alert(this.name);
- }
- var person1 = new Person();
- person1.sayName();
②理解 个人理解:每个对家都有一个构造函数,这个原型对象的属性就有这个构造函数,只是这个原型对象还可以自己添加属性
这里要学习一个in操作符,判断通过对象能够访问给定属性时返回true,就是判断该属性是不是该对象的属性。alert('name' in Person);
③组合构造函数模式和原始模式 (使用最常见的模式)
- //组合使用构造函数模式和原型模式
- function Person(name,age,job){
- this.name = name;
- this.age = age;
- this.job = job;
- this.friends = ['Shelby','Court'];
- }
- Person.prototype = { //重新定义原型对象
- constructor: Person,//构造函数
- sayName: function(){
- alert(this.name);
- }
- }
js对象学习的更多相关文章
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- js的常用方法和对象学习
js的常用方法和对象学习String对象:操作字符的. 使用:字符串.函数名. 大小写转换: toUpperCase() 转换大写 toLowerCase() 转换小写 function testSt ...
- JS基础学习——对象
JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的 ...
- Jquery学习笔记(1)--JQuery原理,与JS对象互换,核心函数
js对象转jQuery对象,$('num'), jQuery对象转js对象,$('num')[0],或$('num').get(0). 1.点击换行,each(),html(),attr(),每个h1 ...
- JQuery学习:jquery对象和js对象区别和转换
JQuery对象与JS对象区别与转换 1.JQuery对象在操作时,更加方便 2.JQuery对象和js对象方法不通用 3.两者相互转换 * jq -- > js:jq对象[索引] 或者 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- React.js深入学习详细解析
今天,继续深入学习react.js. 目录: 一.JSX介绍 二.React组件生命周期详解 三.属性.状态的含义和用法 四.React中事件的用法 五.组件的协同使用 六.React中的双向绑定 ...
- js入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
- js再学习笔记
#js再学习笔记 ##基本 1.js严格区分大小写 2.js末尾的分号可加,也可不加 3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...
随机推荐
- IIS中查看W3P.exe进程对应的应用程序池的方法
对于IIS6可以运行 iisapp -a来显示应用程序池的性能列表. iisapp.vbs它是一个脚本程序,在安装2003时需要SP1才有 而IIS7可以直接用它的外壳命令 C:"Windo ...
- 【分享】4412开发板ubuntu 12.0.4播放音乐没有声音解决方法
转自迅为论坛:http://bbs.topeetboard.com 准备工作 1.下载 vim 在命令行上输入 apt-get install vim 下载 vim 2.输入 vim /etc/hos ...
- java变量的初始化
public class Init { private int age;//非静态初始化语句<3> private static String name; //静态初始化语句,先初始化静态 ...
- [No00003F]richtextbox实现拖放
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { Initialize ...
- java 关于多线程高并发方面
转有关的文章链接: Java 高并发一:前言: http://www.jb51.net/article/92358.htm Java 高并发二:多线程基础详细介绍 http://www.jb51.ne ...
- 收集入侵Windows系统的证据
随着网络的不断扩大,网络安全更加会成为人们的一个焦点,同时也成为是否能进一步投入到更深更广领域的一个基石.当然网络的安全也是一个动态的概念,世界上没有绝对安全的网络,只有相对安全的网络.相对安全环境的 ...
- html5游戏-包围盒检测算法
矩形包围盒算法:检测2个矩形是否重叠,在这样情况下要判断2个矩形是否碰撞只需要比较两个矩形顶点的坐标即可.假设矩形A用(x1,y1)表示左上角,(x2,y2)表示右下角,矩形B用(x3,y3)表示左上 ...
- asp.net webapi支持跨域
1.Install-Package Microsoft.AspNet.WebApi.Cors 2. using System.Web.Http; namespace WebService { ...
- winform程序重启
winform程序重启的方法: private void ReStart() { string processName = System.Diagnostics.Process.GetCurrentP ...
- Conherence Function
来源: 部分来自wiki:https://en.wikipedia.org/wiki/Coherence_(signal_processing): 部分来自网络其它内容. The coherence ...