技术标签: JavaScript javascript
const person = {
firstName: "chen",
lastName: "guanxi",
};
// 定义对象的属性的属性(原属性)
Object.defineProperty(person, "fullname", {
// value:'chen guanxi', 属性的值
configurable: false, // 是否可以重新配置或者删除
// writable:true, // 是否可以枚举
enumerable: true, // 是否可以枚举,遍历, for in
get() {
// 属性读取时会调用的方法(返回值就是属性的值)
return this.firstName + " " + this.lastName;
},
set(newVal) {
// console.log(newVal); luo yonghao
// 利用数组一一对应关系来解构
const [firstName, lastName] = newVal.split(" ");
console.log(firstName); // luo
console.log(lastName); // yonghao
// console.log(this); { firstName: 'chen', lastName: 'guanxi', fullname: [Getter/Setter] }
this.firstName = firstName;
this.lastName = lastName;
},
});
// 此时会调用get方法
console.log(person.fullname); //chen guanxi
// 此时会调用set方法
person.fullname = "luo yonghao";
console.log(person);
// { firstName: 'chen', lastName: 'guanxi', fullname: [Getter/Setter] } 修改前
// { firstName: 'luo', lastName: 'yonghao', fullname: [Getter/Setter] } 修改后
不会遍历原型链
// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// array like object
var obj = {
0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']
// array like object with random key ordering
var anObj = {
100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']
// getFoo is a property which isn't enumerable
var myObj = Object.create({
}, {
getFoo: {
value: function () {
return this.foo; }
}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']
不会遍历原型链
var obj = {
foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
// array like object
var obj = {
0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']
// array like object with random key ordering
// when we use numeric keys, the value returned in a numerical order according to the keys
var an_obj = {
100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']
// getFoo is property which isn't enumerable
var my_obj = Object.create({
}, {
getFoo: {
value: function() {
return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']
// non-object argument will be coerced to an object
console.log(Object.values('foo')); // ['f', 'o', 'o']
const obj = {
a: 1,
};
obj.__proto__.b = 2;
console.log(Object.keys(obj)); // ["a"]
for (const key in obj) {
console.log(key); // a b
if (obj.hasOwnProperty(key)) {
console.log(key); // a
}
}
for (const key in obj) {
console.log(key); // a b
if (Object.prototype.hasOwnProperty.call(obj, key)) {
console.log(key); // a
}
}
文章浏览阅读2.9k次。一定要记住,没有什么问题是重装解决不了的事,如果有,那就多重装几次,总比耗时间百度找答案,还不一定有结果!!!使用fidder自定义规则时,也就是customize rules总会有各种报错,比如Fail binding !unable to load fidder for code-completion support 或着找不到Fidder ScriptEditor工具,归根揭底是f..._unable to load fiddler for code-completion support
文章浏览阅读1.2w次。一、下载软件GeoGebra Classic 5 是一款免费的画图软件.下载网址是:https://www.geogebra.org/download在这个页面下选择“GeoGebra经典5”,这款软件是一款基于WIN32的程序.而“GeoGebra经典6”是基于WEB富客户端的程序,理念上显得更先进一些.图1 下载 GeoGebra经典5二、GeoGebra是自由软件从..._geogebraclassic5
文章浏览阅读574次。简介Curator是Netflix公司开源的一套Zookeeper客户端框架。了解过Zookeeper原生API都会清楚其复杂度。Curator帮助我们在其基础上进行封装、实现一些开发细节,包括接连重连、反复注册Watcher和NodeExistsException等。目前已经作为Apache的顶级项目出现,是最流行的Zookeeper客户端之一。从编码风格上来讲,它提供了基于Fluent的编程风格支持。除此之外,Curator还提供了Zookeeper的各种应用场景:Recipe、共享锁服务、Mast_curator-x-discovery
文章浏览阅读918次。DB笔试面试历史连接--2019DB笔试面试历史连接--2018DB笔试面试历史连接--2017DB笔试面试历史连接--2016小麦苗课堂培训认证OCP培训说明连接:ht..._db宝面试
文章浏览阅读631次。1.oc project samples指定使用的项目。[student@workstation ~]$ oc project samplesAlready on project "samples" on server "https://master.lab.example.com:8443". 2.oc get dc -o wide查看部署配置资源的信息。[student@wor..._oc scale dc greeter --replicas=5
文章浏览阅读131次。****获取两个字符串中的最大相同子串,比如: str1="abcwerthelloyuiodefabcdef";str2="cvhellobnm" 提示:将短的那个串进行长度依次递减的子串与较长的串比较**前提:两个字符串中只有一个最大相同子串public String getMaxSameString(String str1,String str2){ if(str1!=null&&str2!=null){ String maxStr=(st_c#两个字符串相同最多的词组
文章浏览阅读2.3k次。地图经纬度坐标转qt控件坐标const QgsPointXY &pointqDebug() << m_mapCanvas->getCoordinateTransform()->transform(point).x() << m_mapCanvas->getCoordinateTransform()->transform(point).y(..._qgis经纬度转坐标函数
文章浏览阅读845次。继续上一章,我们看了一下基本的目录结构。那么现在我们要把那个简单的Helloworld界面改的复杂一点了。增加输入框和按钮现在把helloworl改成一个登录界面。需要增加两个输入框和一个按钮:增加事件监听现在我们希望在点击登录按钮之后能有一些反应,比如弹出一个对话框什么的。需要做的就是给Button绑定一个click事件。protected void initialize() { Butt_android:text="@string/title"是什么意思
文章浏览阅读708次,点赞20次,收藏13次。01-环境搭建、SpringCloud微服务-黑马头条
文章浏览阅读1.3k次。1. SLG,游戏框架设计部分? 了解?思路很相近,基本框架都是一样的。根据主程的需求,每个主程都有一套自己的习惯,比如加注释,不然的话,会死的很惨。2. 怎么进行数据分离呢????? 逻辑层和数据层,为什么要分离开?3. 怎么进行热更,资源和代码呢?ILRuntime ,可以加功能,只是不能修改主工程的东西。ILRuntime ,这个性能有问题,什么问题呢..._ilruntime 面试
文章浏览阅读1.5w次,点赞10次,收藏63次。NeoVim安装_neovim
文章浏览阅读4.2w次,点赞4次,收藏8次。curl文件下载curl将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用–silent 选项。1 . curl URL --silent 这条命令是将下载文件输出到终端,所有下载的数据都被写入到stdout。2 . curl URL --silent -O 使用选项 -O 将下载的数据写入到文件,必须使用文件的绝对地址。_curl download