Object方法
系列文章目录
前端系列文章——传送门
JavaScript系列文章——传送门
文章目录
- 系列文章目录
- 对象方法
- 一、Object原型方法
- 1、hasOwnProperty
- 2、isPrototypeOf
- 3、propertyIsEnumerable
- 4、toString
- 5、其他
- 二、Object方法
- 1、assign
- 2、create
- 3、defineProperties
- 4、defineProperty
- 5、entries
- 6、freeze
- 7、fromEntries
- 8、getOwnPropertyDescriptors
- 9、getOwnPropertySymbols
- 10、getPrototypeOf
- 11、hasOwn
- 12、is
- 13、isExtensible
- 14、isFrozen
- 15、keys
- 16、preventExtensions
- 17、setPrototypeOf
- 18、seal
- 19、values
- 三、ES6的对象操作
- 1、Symbol
- 2、Reflect
- 3、Proxy
对象方法
一、Object原型方法
Object构造函数对应的原型中有很多方法,比较实用,如下:
console.log(Object.prototype)
图示:
1、hasOwnProperty
用于判断某个对象是否具有某个自带属性。自带属性,指的是自身就有的,而非继承来的,语法:
对象.hasOwnProperty(非继承属性) // 返回布尔值,true表示是,false表示否
例:
function Person(name, age) {this.name = namethis.age = age
}Person.prototype.sex = '男'var man = new Person('张三', 12)console.log( man.hasOwnProperty('name') ); // true
console.log( man.hasOwnProperty('sex') ); // false
console.log( man.hasOwnProperty('height') ); // false
只有自己内非继承的属性才能返回true,继承的和不是自己的属性都是false。
2、isPrototypeOf
用于判断一个对象是否在另一个对象的原型链上。语法:
对象a.isPrototypeOf(对象b) // 判断对象a是否在对象b的原型链上,返回布尔值
例:
function Animal() {}var ani = new Animal()function Bird() {}Bird.prototype = anivar maque = new Bird()console.log( Object.prototype.isPrototypeOf(maque) ); // true
console.log( ani.isPrototypeOf(maque) ); // true
var ani1 = new Animal()
console.log( ani1.isPrototypeOf(maque) ); // false
3、propertyIsEnumerable
用于判断是否可以从对象中遍历得到某个属性,语法:
对象.propertyIsEnumerable(属性名) // 返回布尔值
例:
function Person(name, age) {this.name = namethis.age = age
}Person.prototype.sex = '男'var man = new Person('张三', 12)console.log( man.propertyIsEnumerable('name') ) // true - 自己的属性可以遍历
console.log( man.propertyIsEnumerable('sex') ) // false - 继承来的属性无法遍历
4、toString
用于将对象转成字符串,语法:
对象.toString() // 返回'[object Object]'
5、其他
toLocaleString
和valueOf
没有实际的效果,是为了让子原型能具备这些方法,来实现不同类型数据的功能。
toLocaleString
给不同的数据调用会得到不同的数据:
// 对象调用
var obj = {name: '张三', age: 123456}
console.log( obj.toLocaleString() ); // [object Object]// 字符串调用
var str = 'abcdefg'
console.log( str.toLocaleString() ); // abcdefg// 数字调用
var num = 123456789
console.log( num.toLocaleString() ); // 123,456,789// 布尔值调用
var bool = true
console.log( bool.toLocaleString() ); // true// 时间日期对象调用
var date = new Date()
console.log( date.toLocaleString() ); // 2022/11/4 09:20:01
只有数字和时间日期对象调用的时候,能起到作用,其他类型的数据调用后,会默认调用toString
方法转成字符串而已。
valueOf
给不同类型的对象调用功能是不同的:
// 对象调用
var obj = {name: '张三', age: 123456}
console.log( obj.valueOf() ); // {name: '张三', age: 123456}// 字符串调用
var str = new String('abcdefg')
console.log( str.valueOf() ); // abcdefg// 数字调用
var num = new Number(123456789)
console.log( num.valueOf() ); // 123456789// 布尔值调用
var bool = new Boolean(true)
console.log( bool.valueOf() ); // true// 时间日期对象调用
var date = new Date()
console.log( date.valueOf() ); // 1667525014847
时间日期对象调用能获取到时间戳,其他类型的对象调用,会得到具体的值,相当于console.log(数组/对象)
的值
二、Object方法
Object本身也有一些实用的方法:
console.dir(Object)
图示:
1、assign
用于将一个对象中可遍历的属性复制到另一个目标对象中,返回目标对象,语法:
var 新目标对象 = Object.assign(原目标对象, 被复制的对象)
例:
var obj = {name: '张三',age: 12
}var pbj = {sex: '男',height: 180
}pbj.__proto__.weight = 150 // 不可遍历属性无法复制var qbj = Object.assign(obj, pbj) // 将pbj中的属性复制到obj中console.log(obj); // {name: '张三', age: 12, sex: '男', height: 180}
console.log(qbj); // {name: '张三', age: 12, sex: '男', height: 180}
console.log(obj === qbj); // true
通常用于做浅克隆,将一个对象中的属性复制在另一个空对象中。
2、create
用于创建一个对象,并指定这个对象的原型,语法:
var 对象 = Object.create(指定的原型对象, {对象键值对的描述}) // 返回创建好的对象
参数1必填,例:
var obj = Object.create()
报错如下:
表示参数1必填,且参数必须是一个对象或null。
参数2是可选项,默认是空对象
例:
var obj = Object.create(null)
console.log(obj); // 这个对象没有原型
创建的是一个空对象,且这个对象没有原型
var pro = {name: '张三'
}var obj = Object.create(pro)
console.log(obj);
创建的是一个空对象,原型为pro对象
参数2中的键,是对象要拥有的键,值必须是一个对象,用于对属性的描述,描述的对象语法如下:
{value: 123, // 属性的值writable: false, // 属性是否可修改enumerable: true, // 属性是否可遍历configurable: false, // 属性是否可删除get: undefined, // 访问属性值的时候执行什么程序set: undefined // 设置属性值的时候执行什么程序
}
例:
var obj = Object.create(null, {age: {value: 12,writable: true,enumerable: true,configurable: true,},
})
console.log(obj);
3、defineProperties
用于给对象添加或修改一个属性,语法:
Object.defineProperties(对象, {对象键值对的描述}) // 返回处理后的对象
例:
var pro = {name: '张三'
}var obj = Object.defineProperties(pro, {age: {value: 12,writable: true,enumerable: true,configurable: true,},
})
console.log(obj);
4、defineProperty
用于监视对象某个属性被访问或被修改的操作,语法:
Object.defineProperty(对象, 属性名, {// 对象属性的描述writable: false, // 属性是否可修改enumerable: true, // 属性是否可遍历configurable: false, // 属性是否可删除get: undefined, // 访问属性值的时候执行什么程序set: undefined // 设置属性值的时候执行什么程序
})
例:
Object.defineProperty(obj, 'name', {writable: false, // 属性是否可修改enumerable: true, // 属性是否可遍历configurable: false, // 属性是否可删除get: function() { // 访问属性值的时候执行什么程序return 值 // 当访问obj.name的时候会得到这个返回的值},set: function(val){ // 设置属性值的时候执行什么程序// 当给obj.name赋值的时候会在这里截获到他的值为val}
})
console.log( obj.name );
obj.name = '李四'
案例:数据和视图双向绑定
<body>
<input type="text">
</body>
<script>
function ViewModel(msg) {this.msg = msg
}var vm = new ViewModel('哈哈')var input = document.querySelector('input')input.value = vm.msgObject.defineProperty(vm, 'msg', {configurable: false,enumerable: true,get: function() {return input.value},set: function(val) {input.value = val}
})input.oninput = function() {vm.msg = this.value
}</script>
改变文本框的值,对象的值会改变,改变对象的值,文本框的值也会改变。
5、entries
用于将对象中可遍历的键值对组成一个数组并返回,语法:
Object.entries(对象) // 返回数组
例:
var obj = {name: '张三',age: 12
}Object.defineProperties(obj, {sex: {value: '男',enumerable: false,}
})console.log(obj);var arr = Object.entries(obj)console.log(arr);
6、freeze
用于冻结一个对象,让对象不能新增、不能修改、不能删除、不能改原型,不能改属性的特性,语法:
var 对象 = Object.freeze(对象) // 返回被冻结的对象
例:
var obj = {name: '张三',age: 12
}obj = Object.freeze(obj)console.log(obj);obj.sex = '男'
console.log(obj);obj.name = '李四'
console.log(obj);delete obj.age
console.log(obj);obj.__proto__ = {height: 180}
console.log(obj.height);
如果对象中的值,是一个对象,里面的小对象是没有被冻结的,也就说这种冻结只是浅冻结:
var obj = {name: '张三',age: 12,wife: {name: '翠花',age: 13}
}
obj = Object.freeze(obj) obj.wife.sex = '女'console.log(obj);
若要深冻结,需要手动写递归函数实现:
var obj = {name: '张三',age: 12,wife: {name: '翠花',age: 13}
}function deepFreeze(data) {for(var key in data) {if({}.toString.call(data[key]) === '[object Object]') {deepFreeze(data[key])}}return Object.freeze(data)
}obj = deepFreeze(obj)
console.log(obj);obj.wife.sex = '女'
console.log(obj);
冻结数据可以提高性能,一个数据确保后面都不会修改的话,就可以将他冻结。
7、fromEntries
跟entries的作用相反,将一个map格式的数组(多个键值对组成的数组)转成一个对象,语法:
Object.fromEntries(map格式的数据) // 返回键值对组成的对象
例:
var arr = [['name', '张三'], [{age: 12}, '哈哈']
]var obj = Object.fromEntries(arr)console.log(obj);
可以将map转成对象。
8、getOwnPropertyDescriptors
获取对象中某个属性对应的描述对象。
9、getOwnPropertySymbols
将对象中所有symbol属性,组成一个数组。
10、getPrototypeOf
获取对象的原型对象。
11、hasOwn
判断一个属性是否属于某个对象,而不是被继承来的。跟hasOwnProperty的功能一样。
12、is
用来判断两个数据是否相等,但是跟==
和===
都不一样,基本类型数据,判断数据看起来是否相等,引用数据类型比较地址跟===
一样,语法:
Object.is(数据1, 数据2) // 返回布尔值
例:
// 基本类型
var a = NaN
var b = NaN
console.log(a == b); // false
console.log( Object.is(a ,b) ); // true - 表面看起来一样var a = -0
var b = +0
console.log(a === b); // true
console.log( Object.is(a, b) ); // false - 表名看起来不一样// 引用类型
var a = {}
var b = {}
console.log(a === b); // false
console.log( Object.is(a, b) ); // false
13、isExtensible
用于判断一个对象是否可扩展(是否可以给对象添加属性)。冻结对象、密封对象不可以扩展。
14、isFrozen
用于判断一个对象是否被冻结。
15、keys
获取对象中所有键组成的数组。
16、preventExtensions
用于将一个对象变得不可扩展。
17、setPrototypeOf
用于给对象设置原型。
18、seal
封闭一个对象,让对象不能添加新属性、不能删除键值对,语法:
Object.seal(要被封闭的对象) // 返回被封闭的对象
例:
var obj = {name: '张三'
}Object.seal(obj)delete obj.name
console.log(obj);obj.age = 12
console.log(obj);obj.name = '李四'
console.log(obj);
19、values
获取对象中所有值组成的数组。
三、ES6的对象操作
1、Symbol
object的键都是字符串,且都是唯一的,不能重复。假设,我们使用一个别人提供的object,但是需要给这个object添加一个新的键值对,自己添加的键就有可能会跟object中原本的键冲突。symbol的主要作用就是创建对象中独一无二的键,可以从根本上防止对象中的键重复。
也就是说,对象中的键除了是字符串以外,还可以是symbol数据。
symbol数据通过Symbol函数生成,语法如下:
var s = Symbol()
console.log(s);
console.log(typeof s);
Symbol是一个函数,但不是一个构造函数,如果将Symbol当做构造函数new使用,会报错。
var s = new Symbol()
console.log(s);
Symbol函数可以接受字符串参数,同一个字符串得出的两个symbol是不相等的,这样就保证了每一个symbol数据都是独一无二的:
var s = Symbol('name')
var s1 = Symbol('name')
console.log(s == s1); // false
如果symbol的参数是一个对象,会默认调用对象的toString方法得到字符串:
var obj = {name: '张三'
}var s = Symbol(obj)
console.log(s);var pbj = {name: '李四',toString: function(){return this.name}
}var s1 = Symbol(pbj)
console.log(s1);
symbol数据作为对象的键使用,可以保证每个键都是唯一的:
var obj = {name: '张三',age: 12
}
// 想给对象添加name属性和age属性,可以对象中已经有了name属性和age属性了,此时就将name和age做成symbol数据,然后将symbol数据当做对象的键使用
// 通过name和age做成symbol数据
var nameSymbolKey = Symbol('name')
var ageSymbolKey = Symbol('age')
// 将symbol数据当做对象的键
obj[nameSymbolKey] = '李四'
obj[ageSymbolKey] = 13
console.log(obj);
symbol数据不能跟其他数据进行运算,不能进行隐形类型转换:
var s = Symbol(0)
var sum = s + 2
console.log(sum);
其他隐形转换都会报错:
var s = Symbol(0)
var str = s + 'abc' // 报错console.log(Number(s)) // 报错
Symbol可以强制转换成字符串和布尔值:
var s = Symbol()console.log( String(s) );
console.log(s.toString());
console.log(Boolean(s));
通过symbol数据的description属性得到symbol数据创建时的字符串参数:
var s = Symbol('abc')
console.log(s.description) // abc
2、Reflect
解决对象访问、修改、删除后我们无法知道是否成功的问题。
问题:当一个对象封闭后,无法添加属性,但我们并不知道是否添加成功
var obj = {name: '张三'
}Object.seal(obj)obj.age = 12
console.log(obj);
结果没有给将age添加到obj上,假设我们并不知道这个对象是封闭的,添加了属性但没添加成功,我们会觉得莫名其妙。删除和修改同理。
使用Reflect进行添加、修改、删除就能知道是否成功了,语法:
Reflect.get(对象, 键) // 返回值或undefined
Reflect.set(对象, 键, 值) // 给对象添加键值对,返回布尔值
Reflect.deleteProperty(对象, 键) // 删除对象键值对,返回布尔值
例:
ar obj = {name: '张三'
}Object.seal(obj)// 添加
var bool1 = Reflect.set(obj, 'age', 12)
console.log(bool1); // false// 删除
var bool2 = Reflect.deleteProperty(obj, 'name')
console.log(bool2); // false// 访问
var bool3 = Reflect.get(obj, 'name')
console.log(bool3); // '张三'var bool3 = Reflect.get(obj, 'aaa')
console.log(bool3); // undefinedvar pbj = {name: '李四'
}// 添加
var bool1 = Reflect.set(pbj, 'age', 12)
console.log(bool1); // true// 删除
var bool2 = Reflect.deleteProperty(pbj, 'name')
console.log(bool2); // true
Reflect是将对象基本操作换成了函数写法,有了返回值,方便我们进行判断了。
3、Proxy
创建一个被劫持/监听的对象,当访问、设置、删除对象键值对的时候会被监视到,和defineProoerty的功能是一样的。语法:
var obj = {name: '张三'
}var pbj = new Proxy(obj, {get(object, key) {console.log(object, key);return 111},set(object, key, val) {console.log(object, key, val);}
})pbj.name = '张三' // {name: '张三'} 'name' '张三'console.log( pbj.name ); // {name: '张三'} 'name' 111
实现数据和视图的双向绑定:
<body>
<input type="text">
</body>
<script>
var input = document.querySelector('input')
var data = {msg: '哈哈'
}
input.value = data.msg
var vm = new Proxy(data, {get(obj, key) {return input.value},set(obj, key, val) {input.value = val}
})
input.oninput = function() {vm.msg = this.value
}
</script>
相关文章:

Object方法
系列文章目录 前端系列文章——传送门 JavaScript系列文章——传送门 文章目录系列文章目录对象方法一、Object原型方法1、hasOwnProperty2、isPrototypeOf3、propertyIsEnumerable4、toString5、其他二、Object方法1、assign2、create3、defineProperties4、defineProperty5、…...

042:cesium加载Eris地图(多种形式)
第042个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载加载Eris地图。这里显示4种形式的地图,分别为:World_Imagery、World_Street_Map、World_Terrain_Base、World_Physical_Map。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示…...

第十四届蓝桥杯大赛软件赛省赛(C/C++B组)
目录试题 A. 日期统计1.题目描述2.解题思路3.模板代码试题 B.01 串的熵1.题目描述2.解题思路3.模板代码试题 C. 冶炼金属1.题目描述2. 解题思路3.模板代码试题 D. 飞机降落1.题目描述2. 解题思路3.模板代码试题 E. 接龙数列1.题目描述2. 解题思路3.模板代码试题 F. 岛屿个数1.题…...

Python生成随机验证码
pip install pillow 实现代码 import random from PIL import Image, ImageDraw, ImageFont,ImageFilterdef check_code(width120, height30, char_length5, font_filekumo.ttf, font_size28):code []img Image.new(modeRGB, size(width, height), color(255, 255, 255))draw…...

Longitudinal Change Detection on Chest X-rays Using Geometric Correlation Maps
文章来源:[MICCAI2019] Keywords:Chest X-ray;Longitudinal analysis;Change detection;Geometric correlation 一、本文提出的问题以及解决方案 在胸部X-ray图像的诊断中,医生会考虑与先前检查相比病变的…...

5年功能测试的一些心得
一、前言 功能测试是测试工程师的基础功,很多人功能测试还做不好,就想去做性能测试、自动化测试。很多人对功能测试的理解就是点点点,如何自己不用心去悟,去研究,那么你的职业生涯也就停留在点点点上了。在这里&#…...

在外包做了3年测试,离职后却成功入职字节跳动.....
最近换了份工作,当时和群里的朋友也聊过换工作的话题,他们都觉得这是一次非常冒险的行为,说我这是一次豪赌——成了会有更好的职业发展,没成可能就会出现两三年的发展断层,甚至影响职业生涯路径。一步错,步…...

网络编程套接字( TCP )
目录 1、实现一个TCP网络程序(单进程版) 1.1、服务端serverTcp.cc文件 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端提供服务 服务端main函数命令行参数 服务端serverTcp.cc总代码 1.2、客户端clientTcp.cc文件 客户端main函数命令行…...

QT 判断当前操作系统是否为 Windows 8 及以下版本
判断当前操作系统是否为 Windows 8 及以下版本,可以使用 QSysInfo 类中的静态函数 QSysInfo::windowsVersion(),其返回值是一个 QOperatingSystemVersion 类型的对象,包含了当前操作系统的主版本号、次版本号和补丁版本号。我们可以通过比较主…...

走进小程序【五】微信小程序架构之【逻辑层】详解
文章目录🌟前言🌟小程序架构🌟逻辑层 App Service🌟注册小程序🌟注册页面🌟使用 Page 构造器注册页面🌟在页面中使用 behaviors🌟使用 Component 构造器构造页面🌟页面生…...

mysql workbench使用教程
mysql workbench使用教程1、打开workbench,显示如下界面,点击2、连接建立好之后,点击已经建立好的连接,连接mysql服务器1、打开workbench,显示如下界面,点击 填写信息 密码是之前安装MySQL时设置的密码 点击…...

蓝易云:Linux系统常用命令-系列【3】
在Linux中,有许多常用的命令可以用来管理文件、目录、进程等。下面是一些常用的Linux命令的介绍。 1. cd:改变当前目录。例如,cd /home。 2. ls:列出指定目录下的所有文件和子目录。例如,ls -al。 3. rm:…...

Nginx实现会话保持,集群模式下session域共享
前言 生产环境下,多数系统为了应对线上多种复杂情况而进行了集群架构的部署,保证系统的高性能、价格有效性、可伸缩性、高可用性等。通常将生产环境下的域名指向Nginx服务,通过它做HTTP协议的Web负载均衡。 session是什么 在计算机中&…...

【SpringMVC】6—SpringMVC拦截器
⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…...

【算法】插入排序
插入排序实现思路:将一个新的数,和前面的比较,只要当前数小于前一个则和前一个交换位置,否则终止;「时间复杂度:O(N^2);」「空间复杂度:O(1)」 一、标准方式 function insertSort(a…...

java servlet 期刊在线投稿系统jsp编程sqlserver数据库mvc模式开发计算机网页设计
一、源码特点 java servlet 期刊在线投稿系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统采用serlvetdaobean,系统具有完整的源代码和数据库,系统 主要采用B/S模式开发。 java servlet 期刊在线…...

命名空间和程序集
目录 一、什么是命名空间 1. 命名空间的作用 2. 命名空间跨文件伸展 3.嵌套命名空间 二、using指令 1. using命名空间指令 2. using别名指令 三、程序集的结构 1. 程序集标识符 2.强命名程序集 一、什么是命名空间 1. 命名空间的作用 命名空间是共享命名空间名的一组…...

108、指针进阶
数组名是数组首元素的地址 但是有两个例外: 1、sizeof(数组名) --数组名表示整个数组,计算的是整个数组的大小,单位是 字节 byte。 2、&数组名 --数组名表示整个数组,取出的是整个数组的地址。 二…...

arm平台交叉编译rt-tests
如果要为ARM平台添加libnuma-dev库,需要在x86平台上进行交叉编译,生成ARM平台可用的库文件。具体步骤如下: 1. ARM平台的交叉编译工具链,例如arm-linux-gnueabihf,可以使用以下命令安装: sudo apt-get in…...

Melis4.0[D1s]:5.测试笔记 - 修改显示测试源码
文章目录1.将显示命令参数固化2.disp_mem源码阅读3.Melis子目录Makefile编写本文是下一篇文章Melis4.0[D1s]:6.mango-MQ-R基于Melis移植lvgl 的基础知识。 1.将显示命令参数固化 从上一篇文章《Melis4.0[D1s]:4.测试笔记 - 内嵌的显示命令》知道,只要2个命令就可以…...

yolov7目标检测:基于自定义数据集完成检测、训练、测试
文章目录 前言一、环境与文件准备1.1、环境配置1.2、源码下载1.3、权重文件下载1.4、详解源码中的文件夹与文件1.5、详解配置参数二、检测模型(detect.py)2.1、自定义检测数据准备2.2、配置参数2.2.1、方式一:打开Pycharm,进入Terminal,输入指令开始检测2.2.2、方式二:点…...

托福高频真词List13 // 附托福TPO阅读真题
目录 4.4单词 生词 熟词 4.5真题 4.4单词 生词 🫐damagemutilatev.损害🫐outlyingfarfar from the centeradj.偏远的🫐posterity[pɑːˈsterəti]further generationn.后代🫐🫐premiseassumpti…...

动力节点王鹤SpringBoot3笔记——第八章 文章管理模块
目录 第八章 文章管理模块 8.1 配置文件 8.2 视图文件 8.3 Java代码 第八章 文章管理模块 创建新的Spring Boot项目,综合运用视频中的知识点,做一个文章管理的后台应用。 新的Spring Boot项目Lession20-BlogAdmin。Maven构建工具,包…...

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试
ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试gazebo仿真测试gazebo仿真测试 启动gazebo并加载无人机模型 $ roslaunch rotors_gazebo mav.launch mav_name:firefly启动 linear mpc 控制器 $ roslaunch mav_linear_mpc ma…...

iOS 内存管理机制与原理
内存分区 内存一般分为五大区:栈区、堆区、常量区、全局区、代码区。如图 1.栈区 是由编译器自动分配并释放的,主要用来存储局部变量、函数的参数等,是一块连续的内存区域,遵循先进后出(FILO)原则。一般在…...

Linux之父:连你自己都懒得解释,那这就是一堆垃圾!
不出意外,Linus又开喷了,这次的激情开麦,源自一部分没有做注释的合并请求:Linux6.3内核收到了一部分合并请求,但这部分合并完全没有注释。 如果你懒得解释为什么存在一个合并,那这个合并从本质上来说就是错…...

二战华为成功上岸,准备了小半年,要个27k应该也算不上很高吧~
先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,华为的游戏专场又是最早开始的,就投递了…...

全国青少年电子信息智能创新大赛(复赛)python·模拟三卷,含答案解析
目录 一、编程题 答案解析: 文档下载打印: 老子搞不懂了,答案解析,还版权问题,有毛病是不。谁在瞎投诉啊。 全国青少年电子信息智能创新大赛(复赛)python模拟三卷 一、编程题 第一题:描述 输入某学生成绩,若成绩在 85分及以上,输出“A”,若成绩在 60分到 85分之间…...

服务网关选型指南
1、为服务网关选型需要考虑哪些因素? 功能需求:您需要考虑您的服务网关需要提供哪些功能,例如 API 管理、请求转发、负载均衡、安全认证等。您应该选择能够满足您的需求的服务网关。 可扩展性:您的服务网关需要能够扩展以支持未来…...

华为OD机试-查找充电设备组合-2022Q4 A卷-Py/Java/JS
某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的最优元素,表示最接近充电站最大输出功率P_max的元素 输入描述 输入为3行: 第1行为充电设…...