js:对象的创建(为prototype做铺垫)

【003JavaScript - 测试 Prototype】使用 Prototype 扩展 JavaScript 对象 / 创建自定义类// 在原型上添加方法// 创建实例// 测试原型方法。 阅读详情

/**
 *在js中并不存在类,所以可以直接通过Object来创建对象,但是使用这种方式创建有一
 *弊端:由于没有类的约束,无法实现对象的重复利用,并且没有一种规范约定,在操作时容易带来问题。
 */
var person = new Object();
person.name = "octopus";
person.age = 25;
person.say = function(){
  alert(this.name+","+this.age);
}

json:json就是js的对象,但是它省去了XML标签,而是通过{}来完成对象的说明。
var person = {
  name:"张三",
  age:25,
  say:function(){
    alert(this.name+","+this.age);
  }
}

//通过json依然可以创建对象数组,创建方式和js的数组一样。
var ps = [
  {name:"张三",age:25},
  {name:"李四",age:26}
];
for(var i=0;i<ps.length;i++){
  alert(ps[i].name);
}
/**
 * 创建一组用户,用户的属性有:
 * name:String,age:int,friends:Array
 * List<Person> ps = new ArrayList<Person>();
 * ps.add(new Person("张三",25,["Ada","Alice"]));
 * ps.add(new Person("李四",26,["Ada","Chris"]));
 * 把ps转换为json
 */
ps = [
  {
    name:"张三",
    age:25,
    friends:["Ada","Alice"]
  },
  {
    name:"李四",
    age:26,
    friends:["Ada","Chris"]
  }
];

//通过工厂的方式来创建对象
function createPerson(name,age){
  var o = new Object();
  o.name = this.name;
  o.age = this.age;
  o.say = function(){
    alert(this.name+":"+this.age);
  }
  return o;
}
//使用工厂的方式,虽然有效地解决了类的问题,但是也存在另一个问题:
//我们无法检测对象p1和p2的具体数据类型,用typeof p1/p2 得到的只能是Object。
var p1 = createPerson("Ada",21); 
var p2 = createPerson("Leon",23);
p1.say();   //Ada:21
p2.say();   //Leon:23

/**
 * 通过构造函数的方式创建,和基于工厂的创建方式类似,
 * 最大的区别就是函数的名称就是类的名称,按照Java约定,第一个字母大写,
 * 使用构造函数创建时,在函数内部是通过this关键字来完成属性的定义。
 */
function Person(name,age){
  this.name = name;
  this.age = age;
  //这种方式带来的问题是所有的Person对象都会为该行为分配空间
  this.say = function(){
    alert(this.name+","+this.age);
  }
}
//通过Person来创建对象
var p = new Person("octopus",24);
p.say();  //octopus,24
/**
 * 使用构造函数的方式可以通过一下方式来检测对象的类型
 */
alert(p1 instanceof Person);  //true
alert(p1.say==p2.say);    //false
/**但是上述构造函数也会带来一些问题:
 * 1.每一个对象中都会存在一个方法的拷贝,如果对象的行为很对的话,空间的占有率就会大大增加
 * 解决方法:可以将函数放到全局变量中定义,这样可以让类中的行为指向同一个函数。
 */
function Person(name,age){
  this.name = name;
  this.age = age;
  //这种方式带来的问题是所有的Person对象都会为该行为分配空间
  this.say = say;
}

//将行为设置为全局的
function(){
  alert(this.name+","+this.age);
}
alert(p1.say==p2.say);  //true
//但是如果将行为设置为全局函数的时候,这个函数就可以被window调用,此时就破坏了对象的封装性。
//而且如果很多类用全局的方式定义了大量的方法,容易造成混乱,也将不利于开发。

下节我们学习用原型的方式创建对象。

原创文章如转载,请注明出处,本文首发于csdn网站:http://blog.youkuaiyun.com/magneto7/article/details/24906045

VSCode 中搭建 Python 开发环境 **验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。 阅读详情

相关推荐

家用电器维修必备:手把手教你用双向可控硅改造单相电机调速(附电路图)

本文提供了一份详细的家用电器维修指南,手把手教你如何利用双向可控硅为核心元件,为单相交流电机(如风扇、排气扇)实现平滑的无级调速改造。内容涵盖核心原理、安全须知、元件选型(如BT136、DB3)、电路图解析、分步搭建教程以及常见故障排查方法,旨在帮助维修爱好者和DIY用户安全、成功地完成这一实用且富有成就感的项目。

read5的博客 835

js prototype 原型对象

每个函数都有一个prototype属性,这个属性是指向一个对象的引用, 这个对象称为原型对象,原型对象包含函数实例共享的方法和属性 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性, 可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函

253

什么是Merkle树?用“文件柜”类比理解区块链的核心技术

Merkle树是一种用于区块链的数据结构,像一个高效的“文件柜”,用于存储和验证大量交易数据。比特币通过Merkle树将交易哈希组织成树状结构,层层汇总,最终生成一个唯一的根哈希,存储在区块头中。这种设计大幅减少数据存储和验证成本,支持快速校验交易的完整性和存在性。Merkle树通过密码学保证数据不可篡改,广泛应用于比特币、区块链及其他分布式系统。它的优势在于高效、轻量和安全,尤其适合轻节点验证和数据同步。理解Merkle树就像掌握区块链的“索引秘籍”,是Web3世界的关键技术。

在路上的专栏 1192

JavaScript prototype(原型对象)

JavaScript 的原型(prototype)是 JavaScript 中的一个重要概念。它是一种特殊类型的对象,每个 JavaScript 对象都有一个原型对象。原型对象在 JavaScript 中起着非常重要的作用。本文将详细介绍 JavaScript 原型对象的作用和在实际工作中的用途。

笔记 2216

开源数显表

开源数显表,广泛应用于车床、铣床、磨床、镗床、火花机、线切割等。市面上此类液晶数显表多数都是基于此项目。 一、基本配置 硬件 主控:STM32F407VGT6 LCD:群创AT070TN92 显示驱动:RA8875 光栅尺:3 x 输入(X/Y/Z) 串口:1 x MAX3232 继电器:2 x 输出 存储:AT24C64 模拟输入:LM324C 电源:AC 220V 软件 工程版本:Keil 5 STM32库:V1.4.0 图形界面:uCGUI 多语言支持:中文、英文 二、项目文

m0_70934529的博客 435

Mac---安装Navicat

把这个填充好的字符串放入刚才打开的RSA在线加解密的网站中的第二个框框(替换之前的请求码),第一个框框不动(还是之前第10步骤中的私钥),点击RSA私钥加密,这时会得到一个加密的字符串,这个就是激活码。{“K”:“你的K值”, “N”:“52pojie”, “O”:“52pojie.cn”, “DI”:“你的DI值”, “T”:你的时间戳}链接: https://pan.baidu.com/s/1mEVY4hnKdktg-p7DBIfD7A 提取码: twwg。Navicat会弹出一个对话框,点击“注册”

weixin_53970868的博客 1万+

JS之prototype对象

在js中,每个构造函数都有一个原型属性prototype,因为这个属性的值通常是一个对象,又叫原型对象!你不需要显式的去定义原型对象,因为每个构造函数都会一个原型属性,通常在这个原型对象中,会包含一个constructor属性指向该原型对象的构造函数。2.例如,共享的属性和方法使用原型对象,避免资源浪费,因为每次new 构造函数对象都会内部重新生成这个对象的属性和方法。function person(userName,age) //每个构造函数是一个对象。

zhuqing90s的博客 283

vue中使用video-player视频插件,第一次无法监听父组件穿过来的值解决办法

需求: 页面![在这里插入图片描述](https://img-blog.csdnimg.cn/20201208141906802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FfOTg4OA==,size_16,color_FFFFFF,t_70) 作品清单是从后端请求回来的不同格式的url,前端需求根据后缀动态判断格式,然后对齐进行下载和

A_9888的博客 768

一文搞懂JS对象创建的方式【整理笔记】

如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没有找到,则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性。在默认情况下,所有 prototype 属性都会自动获得一个 constructor(构造函数) 属性,这个属性包含一个指向 prototype 属性所在函数的指针。如果我们在实例中添加了一个属性,而该属性与实例中的一个属性同名,那么就会在实例中创建该属性,该属性将会屏蔽原型中的那个属性。虽然可以通过对象实例访问保存在原型中的值,但却不能通过对象实例重写原型中的值。

qq_42533666的博客 208

【QT开发】web开发,内嵌网页展示和交互工具QWebEngineView类详解及实战应用

QWebEngineView 类为 Qt 应用提供了强大的网页展示和交互能力。通过合理运用其方法、属性和事件,能够创建出功能丰富、用户体验良好的网页浏览界面。在开发过程中,要注意处理常见问题,以确保网页的正常展示和交互效果。

科技改变人类,技术成就未来 2004

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3812

JS12day(构造函数创建类对象,prototype, proto,原型链,forEach,filter,some,Oblect.keys(),Object.defineProperty())

script>//Object.defineProperty()定义新属性或修改原有的属性varobj={id'小米',price1999};//1.以前的对象添加和修改属性的方式//obj.num=1000;//2.Object.defineProperty()定义新属性或修改原有的属性Object.defineProperty(obj,'num',{valuetrue});value9.9});httpshttps。...

shrimper 417

YOLOv12改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov12精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 684

在JavaScript中创建对象以及prototype的总结

基础知识 1. 严格上讲,在JS中只有对象没有class 2. 对象可以有独有的属性和方法。即对象的属性和方法是类的超集。 3. ECMAScript可以识别两种类型的对象。 一种叫做Native Object,属于语言范畴; 一种叫做Host Object,由运行环境提供例如document对象,Dom Node等。 Native Object是一种松散的结构,可以动态的增加、删除、修改对象的属性(property)和方法(function)。属性有一个名字和一个值,属性值可以是另一个对象的引

Jinuxwu的专栏 1522

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

关于JavaScript的Prototype及原型对象的理解

prototype,原型对象是学习javascript的基础。了解prototype,运用原型对象可以写出更好的面向对象设计的代码

long的博客 2164

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

深入理解js面向对象中的prototype

一、基本使用方法    prototype属性可算是JavaScript与其他面向对象语言的一大不同之处。prototype就是“一个给类的对象添加方法的方法”,使用prototype属性,可以给类动态地添加方法,以便在JavaScript中实现“继承”的效果。     具体来说,prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,当你用prototype编写一

zhaozheng7758的专栏 1万+

用ExplorerPatcher修复高DPI下的Windows界面模糊:3步完成DPI适配完整指南

把窗口拖到高DPI外接屏上,菜单文字发虚、任务栏图标错位。ExplorerPatcher的DPI适配接的正是这个活:进程以每显示器DPI感知模式运行,界面按各屏DPI各自重绘,显示保持清晰。 ## 🔍 症状自查:3个信号判断高DPI界面模糊 - 100%缩放下文字锐利,调到150%就发虚:典型的高DPI界面模糊,应用按低分辨率位图绘制后再放大。 - 窗口从笔记本屏移到外接屏后布局突然错位:两

gitblog_00704的博客 378

JavaScript中对象的prototype属性

JavaScript中对象的prototype属性,可以返回对象类型原型的引用。这是一个相当拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototype)的概念。 1 什么是prototype        JavaScript中对象的prototype属性,可以返回对象类型原型的引用。这是一个相当拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototy

站在巨人的肩上 633

js中如何创建对象和类以及原型链(prototype)的使用

一:概述 js也是面向对象的语言,但js不像java那样类和对象有明显的区别。js可以直接使用var来声明一个对象,也可以使用var 声明一个Object对象然后再给这个对象赋值。我们也可以声明自己的对象模板,类似于java中的类。代码如下: //直接声明对象 var people1 = { name:"nane", sex:1, say:function(){ console.log("说话"); } } console.log(people1); //使用Object

yuankunpeng_的博客 469

js对象及prototype使用

js对象及prototype使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body>

weixin_45742613的博客 117

理解Javascript的prototype对象

我一直很难理解Javascript语言的继承机制。 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"(prototype chain)模式,来实现继承。 我花了很多时间,学习这个部分,还做了很多笔记。但是都属于强行记忆,无法从根本上理解。 直到昨天,我读到法国程序员Vjeux的解释,才恍然大悟,完全明白了Javascrip...

The best are water的博客 203

js数组对象和prototype

js一切皆是对象 创建数组: 方法一:new数组实例 var arr = new Array("1", "2", "3"); 方法二:数组字面量 var arr = [1,2,3] 数组的属性: 属性名 描述 length 数组的长度 数组的方法: 方法名 描述 是否改变数组 arr.concat() 两个数组拼接 否 arr.join() 把数组转化为字符串,默认逗号为分隔,使用参数可以自定义分隔符 否 arr.toString() 把数组转化为字符串

weixin_37648452的博客 478

javascript 对象的property和prototype

 javascript对象的property和prototype是这样一种关系 ECMAScript可以识别两种类型的对象,一种叫做Native Object属于语言范畴;一种叫做Host Object,由运行环境提供例如document对象,Dom Node等Native objects是一种松散的结构并且可以动态的增加属性(proper

soulcq的专栏 863

js面向对象系列——显性prototype和隐形[[prototype]]

如果想要理解Function和Object之间的内部关系,必须引入另两个概念显性prototype和隐形[[prototype]]概念 1. prototype:每一个函数对象都有一个显示的prototype属性,它代表了对象的原型,更明确的说是代表了由函数对象(构造函数)所创建出来的对象的原型 2. [[prototype]]:每个实例对象都有一个名为[[Prototype]]的内...

Mr_xiao1001的博客 366

javascript自学之路(四)————js对象类型之prototype属性的探索

本篇尚未写完,初步排版 作为所有的对象都具有的属性之一,它叫做原型。初始指向一个叫做Prototype的对象(它一开始什么都没有) 作用主要是实现类似“继承”的形式、创建多个对象的实例方便。   对象的prototype属性指向一个对应的Prototype对象,初始值为undefined         var a = new Object();         alert(a.pro

孙文峰的专栏 695

javaScript中prototype的妙用 巧妙运用prototype属性原型链创建对象

转载请说明出处 :http://blog.youkuaiyun.com/liuqiwen0512/article/details/8089690                        今天说下javaScript 中  对象的prototype属性的巧妙运用                            我之前的一篇 js高级篇1中(http://blog.youkuaiyun.com/liuqiwe

4861
上一篇: 函数的属性length、prototype和方法call()、apply()
下一篇: js:深入prototype(上:内存分析)
栖息
博客等级 码龄15年 64粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值