this,创建一个对象

this关键字的用法和类的创建 最基本的程序,适用于初学者!我是在做第一个项目中写的这几个小的demo,供和我一样刚入门的人学习 立即下载

转载于网络

this

  1. this是一个对象
  2. 他的值随着代码的运行而改变
  3. 到处都有this
  4. 不能手动改变this,不能出现在=的左边

    this出现在函数的外部
    this 指向window
    this出现在函数的内部
    若this出现在对象方法的内部那么就指向这个对象
    若不是方法的内部而只是普通函数的内部仍然指向window
    若用构造函数创建一个对象,那么构造函数中的this就指向生成的对象
    通过call/apply来修改函数中的this指向

字面量

var obj = {
    name: 'hanker',
    speak: function(){
        return 'hello ' + this.name;
    },
    age: 20
}
  1. 属性之间没有顺序的分别
  2. 方法直接访问该对象的属性和方法前要加this
  3. 属性名字可以加”,’也可以不加
  4. 也可以先定义一个空对象,然后给这个空对象添加属性和方法
var obj = {};
obj.name = 'hanker';
obj.age = 20
obj.speak = function(){
    return 'hello ' + this.name;
}

上面要访问该对象的属性要使用this.name来获得hanker

优点:简单
缺点:不能批量生成

工厂模式

思想:用一个函数来初始化一个空对象

    function createObj(w,h){
        var obj = {};
        obj.width = w;
        obj.height = h;
        obj.getArea = function(){
            return this.width * this.height;
        }
        return obj;
    }
    console.log(createObj(10,10).getArea());//100

优点:快速创建对象
缺点:生产的对象缺少标识符

    function createObj(w,h){
        var obj = {};
        obj.width = w;
        obj.height = h;
        obj.getArea = function(){
            return this.width * this.height;
        }
        return obj;
    }
    var r1 = createObj(10,10);
    var r2 = createObj(20,20);
    console.log(r1.constructor);//function Object() { [native code] }
    console.log(r2.constructor);//function Object() { [native code] } 没有分开两个对象

构造器

    function F(name,age){//构造器一般首字母大写
        this.name = name;
        this.age = age;
        this.speak = function(){
            return this.name +' '+ this.age;
        }
    }
    var me = new F('hanker',20); // 首先会执行一下 F();
    console.log(me.speak()); // hanker 20
    console.log(me.constructor); // F

过程

  1. 创建一个空对象 var obj = {};
  2. F.apply(obj,[augument]);
  3. obj.proto == F.prototype;
  4. 返回obj

优点:

  1. 简单
  2. 有标志符
  3. 面向对象思想

缺点:
它的自有属性(特别一些方法)会重复。如下:每个对象都有一个speak方法。而这个方法显然应该是全体的对象都有的,而不需要每一个对象都有一个。这样会造成空间的浪费。

原型方式创建对象

function F(name,age){
        this.name = name;
        this.age = age;
    }
    F.prototype.speak = function(){
        return this.name +' ' + this.age;
    }
    var me = new F('hanker',20); // 首先会执行一下 F();
    var you = new F('xxx', 21);
    console.log(me.speak()); // hanker 20
    console.log(you.speak()); // xxx 21
    console.log( you.__proto__ == me.__proto__); // true

注意:

  1. 把每个对象用的方法放在原型中
  2. 创建对象的时候必须加上new,不然只会调用一下函数,函数中的this指向window

原型属性和对象自有属性

    function Reat(){
        this.width = 100;
        this.height = 100;
    }
    Reat.prototype.name = 'juxing'

name这个属性是每个new Reat都有的属性
width 自有属性,每一个对象自己的属性

相同点:
每一个对象都可以访问
不同点:
修改对象的原型每个对象都会受到影响

    function Reat(x,y){
        this.width = x;
        this.height = y;
    }
    Reat.prototype.name = 'juxing'
    var f1 = new Reat(10,20);
    var f2 = new Reat(100,200);
    f1.name = 'f1 juxing';
    console.log(f1.name); // f1 juxing
    console.log(f2.name);// juxing
    f1.__proto__.name = 'f1 juxing';
    console.log(f1.name);// f1 juxing
    console.log(f2.name);// f1 juxing

过程
当f1.name首先去寻找自有属性,如果没有则通过原型链去找
如果通过f1.proto.name去修改则所有通过Reat来创建的对象的原型链上的name都被修改了
如果f2本身没有自有的name属性,那么就向上寻找原型链中的name属性

注意:
console.log(f1.hasOwnProperty(‘name’)); // true
console.log(f2.hasOwnProperty(‘name’)); //false
在原型链上的属性可以通过hasOwnProperty来查询

for(var p in f1){
    console.log(p); //width height name
}
for(var p in f2){
    console.log(p); //width height name
}

通过for in 能遍历出自有属性和原型属性

同理原型方法和自有方法

Abaqus 单元与全局刚度矩阵导出实战指南:从INP修改到结果解析 本文提供了Abaqus中导出单元刚度矩阵和全局刚度矩阵的完整实战指南。通过详细步骤讲解INP文件修改、关键指令插入及结果文件解析,帮助工程师、研究人员和二次开发者深入理解有限元软件内核,实现理论验证、二次开发与深度问题调试。 阅读详情

相关推荐

postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license

最近在工作中使用postgresql 和 timescaledb 的time_bucket_gapfill()函数 报错,让更换license,在网上找了一大圈,没有找到,最后解决了这个问题,这篇文章记录我的解决办法查看timescaledb.license参数命令:show timescaledb.license;修改命令: 结果不行,报错如下:lter system set timescaledb.license=‘timescale’;那只能换包了如果出现上面那种情况,那我们只能先从官网上下载带 '

yang_z_1的博客 3249

java学习笔记16:this关键字的本质、对象创建过程的四步、static关键字

一、对象创建的过程和this的本质 this用于普通的方法和构造器,代表当前的对象        构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建。      创建一个对象分为如下四步:  

任性的生鱼片 的博客 513

利用Python搭建用户画像系统

用户画像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩。本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统。 1.什么是用户画像 用户画像可以理解成是海量数据的标签,根据用户的目标、行为和观点的差异,将他们区分为不同的类型,然后每种类型中抽取出典型特征,赋予名字、照片、一些人口统计学要素、场景等描述,形成一个人物原型 。 用户画像 =...

黎荣恒的博客 3万+

js创建对象,构造函数,this,原型,继承

js创建对象 1、使用构造函数 (各实例间互不影响) (函数声明式创建函数对象) function Fun(){ this.name = ['林北星','张万森','展宇']; this.age = ['17','17','19']; this.fun = function(){ console.log('这是对象的方法'); } } console.log(Fun); var s1 = new Fun();//创建实例对象 var s2 = new Fun(

weixin_51040174的博客 317

Xilinx ZYNQ 7000学习笔记二(FSBL代码分析启动-汇编代码)

Xilinx ZYNQ 7000学习笔记

u011116085的博客 4246

xilinx 暑期学校项目(二) 通过HLS实现二维傅里叶变换(2Dfft)及图像数据读入读出方法

要进行维纳滤波,首先就是要将图像矩阵通过二维fft变换到频域。 但是hls_fft.h中只有一维fft的函数,因此我们采用对行逐行进行一维fft,再对列逐行进行一维fft来实现二维fft的效果。 文章目录自带的fft例程二维fft的实现数据的读入和读出读入读出维纳滤波操作 自带的fft例程 自带的fft例程中包括有如下四个函数 void dummy_proc_fe( bool direction, config_t* config, cmpxData in[FFT_LENGTH],

战斗果冻的训练中心 2329

类创建对象中this的指向

this的指向 <!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> &lt

叶先生 401

用Python实现四叉树(quad tree)

import numpy as np #正方形类 class square: #lx、ly为左上角坐标(x对应行号,y对应列号),rx、ry为右下角坐标 def __init__(self,lx,ly,rx,ry): self.lx=lx self.ly=ly self.rx=rx self.ry=ry #检查该矩阵中是否满足条件 #参数:原矩阵,阈值 #返回值:布尔类型 def check(s

weixin_44164489的博客 5868

软件开发:面向对象设计的七大原则!

软件系统的构建是一个需要不断重构的过程,在这个过程中,模块的功能抽象,模块与模块间的关系,都不会从一开始就非常清晰明了,所以构建100%满足开闭原则的软件系统是相当困难的,这就是开闭原则的相对性。但在设计过程中,通过对模块功能的抽象(接口定义),模块之间的关系的抽象(通过接口调用),抽象与实现的分离(面向接口的程序设计)等,可以尽量接近满足开闭原则。根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。

rainbow的博客 548

51单片机计算器(源程序+流程图+答辩报告+综合设计)

保姆级讲解!C语言编程,使用51单片机及LCD1602显示屏实现!

m0_57007304的博客 2万+

NX二次开发(Python)-UIStyler-选择体和按钮操作

用UG NX的UIStyler块界面编辑器,生成带有“选择体”和“按钮”操作的一个界面,如下图所示:

GimiGimmy 2311

9.迪米特法则——面向对象设计原则

前几节分别详细介绍了面向对象设计原则中的开闭原则、里氏替换原则、依赖倒置原则、单一职责原则和接口隔离原则,本节将详细介绍迪米特法则。 迪米特法则的定义 迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demete...

bater2356的博客 722

Field Characteristics 深入解析,理解 SAP ABAP Analytics 中 Dimension 与 Measure 的真正边界

在SAP ABAP Analytics数据模型中,字段应建模为Dimension还是Measure,关键在于业务语义而非数据类型。Dimension提供分析上下文,构成数据坐标系,支持钻取与切片;Measure则需具备明确聚合语义(如#SUM、#MIN、#MAX),且必须满足Distinct(无重复)与Complete(无缺失)原则,确保聚合结果准确。错误的建模会导致聚合偏差,根源常在事实粒度不清或关联关系不当。因此,正确划分字段角色,本质是让Analytical Engine准确理解业务数据的分析逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 56

创建一个对象的步骤(this的使用)

1.分配对象空间,并将对象成员初始化为0或空(布尔型初始化为false) 2.执行属性值的显式初始化 3.执行构造方法 4.返回对象的地址给相关变量 this的本质就是 “ 创建好的对象的地址 ”,由于在构造方法调用前,对象已经创建。 因此在构造方法中也可以使用this代表 “ 当前对象 ”。 类比C语言指针。 构造函数调用其它构造函数,需要将this写在构造函数的第一...

南的网络技术小屋 935

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

this的本质、this最常见的用法、创建一个对象的完整四步

this的本质: 就是“创建好的对象的地址”!由于在构造方法调用前,对象已经创建。 因此,在构造方法中也可以使用this代表“当前对象” this最常见的用法: 1、 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对 象。构造方法中,this总是指向正要初始化的对象。 2、 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于 构造方法的第一句 3、 this不能在static方法中使用` /

Wynb1020的博客 458

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

this 的本质就是创建好的对象的地址由于在构造方法调用前 对象已经创建。因此,在构造方法中也可以使用 this 代表当前对象这句话对不对 并说出 创建一个对象的完整的四步

因为构造方法是创建 Java 对象的重要途径,通过 new 关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建。1.分配对象空间,并将对象成员变量初始化为 0 或空。4.返回对象的地址给相关的交量。2.执行属性值的显式初始化。

2401_83705058的博客 139

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【无标题】this 的本质就是创建好的对象的地址由于在构造方法调用前 对象已经创建。因此,在构造方法中也可以使用 this 代表当前对象这句话对不对 并说出 创建一个对象的完整的四步

因为构造方法是创建 Java 对象的重要途径,通过 new 关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建\n\n完整的四步:\n\n1.分配对象空间,并将对象成员变量初始化为 0 或空\n\n2.执行属性值的显式初始化\n\n3.执行构造方法\n\n4.返回对象的地址给相关的交量。

2401_83778905的博客 173

闭包,this,call,apply,bind区别,原型原型链,创建对象的方式,继承,New 一个对象具体做了什么

闭包 对闭包的理解 函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。闭包就是能够读取其他函数内部变量的函数。内部函数对外部函数的变量有了引用关系——闭包就是这时产生的。每次对外部函数的调用,都会产生一次闭包。 实现方法: 1 给函数添加一些属性 2 声明一个变量,将一个函数当做值赋给变量 3 new一个对象,然后给对象添加属性和方法 4 var obj={}就是声明一个空的对象 用处 它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中

highfish920的博客 228

JavaScript笔记5(作用域,声明提前,this,使用工厂方法创建一个对象 和 构造函数,原型对象,toString(),垃圾回收)

JavaScript作用域声明提前this二级目录三级目录 作用域 作用域指一个变量的作用的范围 在JS中一共有两个作用域 1、全局作用域 直接编写在script标签中的JS代码,都在全局作用域中 全局作用域在页面打开时创建,在页面关闭时销毁 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,它由浏览器创建,我们可以直接使用 在全局作用域中: (1)创建的变量都会作为window对象的属性保存 (2)创建的函数都会作为window对象的方法保存 全局作用域中的变量

weixin_60440795的博客 525

【C++】day03 - 【类型与对象的概念】【类型】【构造函数】【一个对象创建的过程】【构造函数的应用】【头文件和实现文件的分离】【this指针】【析构函数】

目录一、类型与对象的概念1.1什么是对象1.2类型二、如何在计算机中描述类型2.1使用结构体(struct)对类型进行描述2.2使用类(class)对类型进行描述三、构造函数3.1构造函数概述3.2一个知识点四、一个对象创建的过程五、构造函数的应用5.1 要点5.2 初始化列表六、头文件和实现文件的分离七、this指针7.1 this指针概述7.2 this的使用八、析构函数8.1概述8.2析构函数程序举例: 一、类型与对象的概念 1.1什么是对象 万物皆对象 程序就是由一组对象组成的,对象和对象通过发

weixin_45519751的博客 223

正确创建对象

对象创建期间未发生this溢出!

huhuxiaomomo的博客 282

类和对象:this指针理解

this指针

weixin_45377028的博客 256

js中创建对象时,工厂方式与构造函数方式中this的区别

上代码:name="www"; function createClass() { alert(this == window); this.name="ad"; return this; } var o=createClass(); alert("----o----"+o.name);//执行结果: ———图片不知何故看不到了———————–var obj=new createClass();//此

A1367297309的专栏 580

this指针详解

this指针 this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。 this指针是类的指针,指向对象的首地址。 this指针只能在成员函数中使用,在全局函数、静态成员函数中都不能用this。 this指针只有在成员函数中才有定义,且存储位置会因编译器不同有不同存储位置。 this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的

weixin_54285142的博客 1万+

修改一个函数中的this

如果实参值列表是放在一个数组中的,而不是多个值分着给的,同样想完成this替换的功能, 就要用apply( )实现。如果反复调用函数副本时,个别实参值如果是固定重复不变的情况下,再用bind( )时,除了可以替换this的指向时,还能绑定部分固定的实参值。var 新函数名 = 要调用的函数.bind( 替换this的对象,固定实参值)要调用的函数.apply( 替换this的对象,实参值列表(数组列表) )要调用的函数.call( 替换this的对象,实参值列表 )

xx2410653967的博客 514

C++中的this指针

This指针 在C++中,一个类的对象总是共享类的成员函数,也就是说,当在生成一个对象时,只生成它的数据成员,而它的成员函数则是保存在原来的类所在的函数代码段。C++中是通过this指针来引用函数的。 即:C++中为成员函数提供了一个名字为this的指针,称为自引用指针。每当创建一个对象时,系统就把this指针初始化为指向当前对象,即this指针的值就是当前调用成员函数的对象的起始地址。所以,

qq_28915885的博客 314
上一篇: float,clear
下一篇: 通过jQuery获得按键,模拟按键操作
han_hanker
博客等级 码龄13年 35粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值